栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在contenteditable div中的插入符中插入html

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在contenteditable div中的插入符中插入html

在大多数浏览器中,您可以使用

insertNode()
从选择中获得的范围方法。
pasteHTML()
如前所述,在IE
<9中,您可以使用。以下是在所有主要浏览器中执行此操作的功能。如果已经选择了内容,则将其替换,因此这实际上是粘贴操作。另外,我添加了代码以将插入符号放置在插入内容的末尾之后。

码:

function pasteHtmlAtCaret(html) {    var sel, range;    if (window.getSelection) {        // IE9 and non-IE        sel = window.getSelection();        if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); // Range.createContextualFragment() would be useful here but is // only relatively recently standardized and is not supported in // some browsers (IE9, for one) var el = document.createElement("div"); el.innerHTML = html; var frag = document.createdocumentFragment(), node, lastNode; while ( (node = el.firstChild) ) {     lastNode = frag.appendChild(node); } range.insertNode(frag); // Preserve the selection if (lastNode) {     range = range.cloneRange();     range.setStartAfter(lastNode);     range.collapse(true);     sel.removeAllRanges();     sel.addRange(range); }        }    } else if (document.selection && document.selection.type != "Control") {        // IE < 9        document.selection.createRange().pasteHTML(html);    }}

根据注释的要求,这是一个带有附加参数的更新示例,该附加参数指定是否选择插入的内容。

码:

function pasteHtmlAtCaret(html, selectPastedContent) {    var sel, range;    if (window.getSelection) {        // IE9 and non-IE        sel = window.getSelection();        if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); // Range.createContextualFragment() would be useful here but is // only relatively recently standardized and is not supported in // some browsers (IE9, for one) var el = document.createElement("div"); el.innerHTML = html; var frag = document.createdocumentFragment(), node, lastNode; while ( (node = el.firstChild) ) {     lastNode = frag.appendChild(node); } var firstNode = frag.firstChild; range.insertNode(frag); // Preserve the selection if (lastNode) {     range = range.cloneRange();     range.setStartAfter(lastNode);     if (selectPastedContent) {         range.setStartBefore(firstNode);     } else {         range.collapse(true);     }     sel.removeAllRanges();     sel.addRange(range); }        }    } else if ( (sel = document.selection) && sel.type != "Control") {        // IE < 9        var originalRange = sel.createRange();        originalRange.collapse(true);        sel.createRange().pasteHTML(html);        if (selectPastedContent) { range = sel.createRange(); range.setEndPoint("StartToStart", originalRange); range.select();        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596809.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号