正确的方法是正确运用选择对象和范围对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。
<>强思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样的选区),然后,从选择对象转成范围对象。目的是利用范围对象的方法插内容进去。最后,插入动作结束后将光标移到插入内容的后面。强>
var选?win.document.selection;//即 var选?win.getSelection ();//DOM var=sel.createRange范围();//IE下 var=sel.getRangeAt范围(0);//DOM下 如果(range.startContainer) {//DOM下 sel.removeAllRanges ();//删除中选择的所有范围 range.deleteContents ();//清除中范围的内容//获得范围中的第一个html结点 var容器=range.startContainer;//获得范围起点的位移 var pos=range.startOffset;//建一个空范围 范围=document.createRange ();//插入内容 var缺点=win.document.createTextNode (“:)”); 如果容器。nodeType==3){//如是一个TextNode 容器。中(pos cons.nodeValue);//改变光标位置 的范围内。setEnd(容器,pos + cons.nodeValue.length); 的范围内。setStart(容器,pos + cons.nodeValue.length); 其他}{//如果是一个HTML节点 var afternode=container.childNodes (pos); 容器。方法缺点,afternode); 的范围内。setEnd(缺点,cons.nodeValue.length); 的范围内。setStart(缺点,cons.nodeValue.length); } sel.addRange(范围); }{//IE下 var cnode=range.parentElement (); 而(cnode.tagName.toLowerCase() !=吧硖濉?{ cnodecnode=cnode.parentNode; } 如果(cnode。id,,cnode.id==皉ich_txt_editor”) { range.pasteHTML (“:)”); } } win.focus (); >之前<强> innerHTML和pasteHTML区别强>
可以取得或者设定该元素内的HTML内容,可以是任意能包含HTML子节点的元素都使用它
在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个createTextRange()或者document.selection.createRange()创建的区域上
橙色var=document.selection.createRange (); 如果(oRange.text !=") { var oHtml=' & lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”目标=_blank> oRange.text”; oRange.pasteHTML (oHtml); }以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
JavaScript中在光标处插入添加文本标签节点的详细方法