4
當我在一個contenteditable div內插入一個html標籤時,我需要將光標移到新插入的元素的外部(向右),所以如果我繼續類型,新文本將是未格式化的。Contenteditable:將光標移動到插入的html節點(webkit/ie)外部
與Firefox我發現這個解決方案工作得很好:
node = document.createElement("strong");
node.innerHTML = "test";
range.deleteContents();
range.insertNode(node);
range.collapse(false);
可變範圍設置是這樣的:
if (window.getSelection) {
var sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
}
}
使用WebKit瀏覽器上面的代碼(瀏覽器/ Safari瀏覽器)把光標放在新標籤的外面,但是放在左邊。
是否有解決方案(Chrome/Safari)和IE支持(主要是9,可選8)?
感謝
========================================= ====
感謝Tim對他的建議,這裏的工作代碼:
var node = document.createElement("strong");
node.innerHTML = "test";
var space = document.createElement("span");
space.innerHTML = "\u200B";
range.insertNode(space);
range.insertNode(node);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
感謝蒂姆,光標現在移到正確的權利,但如果我鍵入的文本的格式,所以光標仍在標籤 – 2013-02-19 12:23:52
內@ TedR:那是因爲一些瀏覽器(特別是WebKit和IE)已經設定了關於脫字符可以在文檔中的哪個位置的想法,並且將選擇適合這些想法的任何範圍進行標準化。唯一的解決方法是繞過它:例如,在插入的元素之後添加一個零寬度的空格字符。這不好。 – 2013-02-19 12:38:27
感謝蒂姆,我編輯了與工作代碼 – 2013-02-19 13:38:46