<!–
(adsbygoogle=window.adsbygoogle||[]).push({})
–>
(adsbygoogle=window.adsbygoogle||[]).push({})
<!–
–>
原文:https://blog.csdn.net/smartsmile2012/article/details/53642082
createDocumentFragment()用法: https://blog.csdn.net/qiao13633426513/article/details/80243058
html
<iframe id=\"editor\" width=\"600px\" height=\"400px\" style=\"border:solid 1px;\"></iframe>
<input type=\"txt\" onclick=\"alert(getPosition(event.target))\"/>
js
//初始化编辑器
function init() {
var ifr = document.getElementById(\"editor\");
var doc = ifr.contentDocument || ifr.contentWindow.document; // W3C || IE
doc.open();
doc.designMode=\"on\";
doc.contentEditable = true;
doc.write(\'<html><head><style>body{margin:3px; word-wrap:break-word; word-break: break-all; }</style></head><body>GoodNessEditor</body></html>\');
doc.close();
doc.addEventListener(\'paste\',function(e){
e.preventDefault();
posInsertTxt(e,\'插入的内容!\');
});
}
init();
//在光标位置插入内容
var posInsertTxt = (event, txt) => {
var element = event.target ? event.target : event;
var doc = element.ownerDocument || element.document;
var win = doc.defaultView || doc.parentWindow;
var sel;
if (typeof win.getSelection != \"undefined\") {//谷歌、火狐
sel = win.getSelection();
if (sel.rangeCount > ) {//选中的区域
var range = win.getSelection().getRangeAt();
range.deleteContents();
var el = document.createElement(\"div\");
el.innerHTML = txt;
//createDocumentFragment 创建虚拟的节点对象,在创建之初是空的,在把一个DocumentFragment节点插入文档树时,插入的不是DocumentFragment自身,而是它的所有子孙节点
var frag = document.createDocumentFragment(), lastNode;
if (el.firstChild) {
//这里在虚拟节点位置加入的是 文本节点,不是元素节点
lastNode = frag.appendChild(el.firstChild);
}
//在范围初插入节点
range.insertNode(frag);
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if ((sel = doc.selection) && sel.type != \"Control\") {//IE < 9
var textRange = sel.createRange();
textRange.pasteHTML(txt);
}
}
<!–
(adsbygoogle=window.adsbygoogle||[]).push({})
–>
<!– 
–>
(adsbygoogle=window.adsbygoogle||[]).push({})
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
扫码联系技术微信【备注:站媒体网】
客服QQ:137483024







