常见问题当前位置:星鸿娱乐 > 常见问题 > >

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

  

[javascript光标定位,js,光标后面添加节点,js添加文本节点]JavaScript中在光标处插入添加文本标签节点的详细方法

  

正确的方法是正确运用Selection对象和Range对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。

  

  

思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样的选区)。然后,从Selection对象转成Range对象。目的是利用Range对象的方法插内容进去。最后,插入动作结束后将光标移到插入内容的后面。  

  
  
  var sel = win.document.selection; //IE  var sel = win.getSelection(); //DOM  var range = 星鸿娱乐 sel.createRange(); // IE下  var range = sel.getRangeAt(0); // DOM下  if(range.startContainer){ // DOM下  sel.removeAllRanges(); // 删除Selection中的所有Range  range.deleteContents(); // 清除Range中的内容  // 获得Range中的第一个html结点  var container = range.startContainer;  // 获得Range起点的位移  var pos = range.startOffset;  // 建一个空Range  range = document.createRange();  // 插入内容  var cons = win.document.createTextNode(",:),");  if(container.nodeType == 3){// 如是一个TextNode  container.insertData(pos, cons.nodeValue);  // 改变光标位置  range.setEnd(container, pos + cons.nodeValue.length);  range.setStart(container, pos + cons.nodeValue.length);  }else{// 如果是一个HTML Node  var afternode = container.childNodes[pos];  container.insertBefore(cons, afternode);  range.setEnd(cons, cons.nodeValue.length);  range.setStart(cons, cons.nodeValue.length);  }  sel.addRange(range);  }else{// IE下  var cnode = range.parentElement();  while(cnode.tagName.toLowerCase() != “body”){  cnodecnode = cnode.parentNode;  }  if(cnode.id && cnode.id==”rich_txt_editor”){  range.pasteHTML(",:),");  }  }  win.focus();  
  
  

innerHTML 和 pasteHTML 区别  

  

innerHTML 是一个属性,可以取得或者设定该元素内的 HTML 内容,可以是任意能包含 HTML 子节点的元素都使用它  

  

pasteHTML()是一个方法,在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个 createTextRange() 或者 document.selection.createRange() 创建的区域上  

  
  
  var oRange = document.selection.createRange();  if(oRange.text!=''){  var oHtml = 'oRange.text';  oRange.pasteHTML(oHtml);  } 
  
  

  

(责任编辑:admin)

上一篇:星鸿娱乐:Gmail安卓APP中的漏洞使得任何人都可以

下一篇:星鸿娱乐注册:浅析$.getJSON异步请求和同步请求

推荐内容

客户服务热线

400 888 8932

在线客服