【发布时间】:2017-10-03 14:29:46
【问题描述】:
单击按钮后,我正在尝试在所选文本上添加一些文本。
我有一个内容可编辑区域,如下图所示。
我想选择文本,然后当我单击 B 图标时,我想在所选文本周围添加一些 html 标签,例如
<b>make this text bold</b>
等等
我在stackoverflow上找到了这些代码;
这个将选择作为文本返回给我。
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
如果我将它们一起使用,这个会根据需要更改文本的 html。
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("<b>" + getSelectionText() + "</b>");
但是当我点击图标时,它会失去焦点并选择按钮作为选择,并且 replaceSelectionWithHtml() 会针对 B 图标运行。
我将如何激活这些任务?
这里是 codepen 链接:https://codepen.io/anon/pen/ybzzXZ 它的功能不完全,但我会给你一个更好的主意。
【问题讨论】:
-
您能否针对您面临的问题创建一个有效的 sn-p?或者添加相关的html代码
-
请听从@Carsten Løvbo Andersen 的建议,对您的所有问题都这样做。始终拥有一个 sn-p 是很重要的。 codepen 不错。
-
实际上它的系统有点复杂,但我会尝试让 sn-p 工作。
-
@WosleyAlarico 拥有一个 sn-p 并不总是很重要,但是当问题很难
debug没有时拥有一个是个好主意 -
@WosleyAlarico 不需要使用 codepen 所以有
<>
标签: javascript jquery dom highlight getselection