How to replace selected text with html in a contenteditable element?
本问题已经有最佳答案,请猛点这里访问。
如何使用contenteditable元素将所选内容替换为自己的html?
看到这里工作jsFiddle:http://jsfiddle.net/dKaJ3/2/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function getSelectionHtml() { var html =""; if (typeof window.getSelection !="undefined") { var sel = window.getSelection(); if (sel.rangeCount) { var container = document.createElement("div"); for (var i = 0, len = sel.rangeCount; i < len; ++i) { container.appendChild(sel.getRangeAt(i).cloneContents()); } html = container.innerHTML; } } else if (typeof document.selection !="undefined") { if (document.selection.type =="Text") { html = document.selection.createRange().htmlText; } } alert(html); } |
摘自Tim Down的代码:从用户选择的文本返回HTML
要获取选定的HTML,您可以使用我为此问题编写的函数。 要将选择内容替换为您自己的HTML,可以使用此功能。 这是替换函数的一个版本,该函数插入HTML字符串而不是DOM节点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function replaceSelectionWithHtml(html) { var range; if (window.getSelection && window.getSelection().getRangeAt) { range = window.getSelection().getRangeAt(0); range.deleteContents(); var div = document.createElement("div"); div.innerHTML = html; var frag = document.createDocumentFragment(), child; while ( (child = div.firstChild) ) { frag.appendChild(child); } range.insertNode(frag); } else if (document.selection && document.selection.createRange) { range = document.selection.createRange(); range.pasteHTML(html); } } replaceSelectionWithHtml("REPLACEMENT HTML"); |