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