29
我一直在寻找答案的高和低,但失败了。替换contenteditable div中的选定文本
是否有跨浏览器解决方案来替换contenteditable div中的选定文本?我只想让用户突出显示一些文本,并将突出显示的文本替换为xxxxx。
我一直在寻找答案的高和低,但失败了。替换contenteditable div中的选定文本
是否有跨浏览器解决方案来替换contenteditable div中的选定文本?我只想让用户突出显示一些文本,并将突出显示的文本替换为xxxxx。
下面将做的工作在所有主要浏览器:
function replaceSelectedText(replacementText) {
var sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(replacementText));
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.text = replacementText;
}
}
我不能相信就这么简单。有用。谢谢! – Judy 2010-10-22 15:01:19
这在Chrome中不适用于我(粘贴到INPUT,TEXTAREA或内容编辑)。我怀疑这是因为Chrome不支持多个范围。它落入window.getSelection的情况下,但是然后sel.rangeCount是false,并且没有“else”子句。 – 2012-08-15 15:51:32
@DavidJeske:这绝对适用于可用于元素的Chrome,但不适用于输入或textareas:在非-IE浏览器,此代码特定于常规内容中的选择。 – 2012-08-15 16:17:17