最近写一个小富文本编辑器,知识点整理
1:最近维护项目,老板让新增了一个,公告功能,前提是输出的公告要保持原来的布局风格,也就是最简便的编辑器了,基本都是文本,只要保证最起码得文本间的空格和换行就行了,于是搜索文档,记录如下
document.all//用来判断是否IE浏览器
因为此方法最初为IE提供,只有在IE浏览器中,document.all才返回 布尔值true, 其他浏览器返回false,所以可以用来判断
var range = document.createRange()//创建一个range对象.表示页面上一段连续的区域,通过此对象可以操作或修改页面上的任何内容
range对象的属性和方法
//range对象的属性和方法
range.setStart(dom,'开始的索引')//设置选择的起点
range.setEnd(dom,'结束的索引')//设置选择的重点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>range3</title>
<script>
function deleteChar() {
var div = document.getElementById("myDiv");
var textNode = div.firstChild;
var rangeObj = document.createRange();
rangeObj.setStart(textNode,1);
rangeObj.setEnd(textNode,4);
rangeObj.deleteContents();
}
</script>
</head>
<body>
<div id="myDiv" style="color:red">这段文字是用来删除的</div>
<button onclick="deleteChar()">删除文字</button>
</body>
</html>
//setStartBefore:将“起点”设置到referenceNode前
//setStartAfter:将“起点”设置到referenceNode后
//setEndBefore:将“结束点”设置到referenceNode前
//setEndAfter:将“结束点”设置到referenceNode后
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="application/javascript">
function delrow(){
var table=document.getElementById("mytable");
if(table.rows.length>0){
var row=table.rows[0];
var rangeObj=document.createRange();
rangeObj.setStartBefore(row);
rangeObj.setEndAfter(row);
rangeObj.deleteContents();
}
}
</script>
</head>
<body>
<table id="mytable" border="1">
<tr>
<td>内容1</td>
<td>内容2</td>
</tr>
<tr>
<td>内容3</td>
<td>内容4</td>
</tr>
</table>
<button onclick="delrow()">删除第一行</button>
</body>
</html>
range.selectNode(dom)//选择该节点的所有子孙节点
range.selectNodeContents(dom)//选择该节点的所有子节点
cloneRange()//返回range对象
cloneContents()//返回html片段
将任意html元素变为可编辑元素
contentEditable = true
为元素添加此属性后,该元素变为可编辑
并可调用
documnet.execCommand('命令',true或false,'值')//true弹出对话框
参考https://www.cnblogs.com/leong-min/p/6483523.html
浙公网安备 33010602011771号