JavaScript中在光标处插入添加文本标签节点的详细方法

  

正确的方法是正确运用选择对象和范围对象,实现在光标当前位置插入文本或结点。但是这两个对象在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中在光标处插入添加文本标签节点的详细方法