你在說什麼聽起來像一個DOM Range,這是在除了IE所有的主流瀏覽器實現的。根據HTML中的字符偏移來指定位置並不是一個好主意,因爲innerHTML的實現差別很大。一個DOM範圍有一個開始和結束邊界,每個邊界由節點和該節點內的偏移量指定。在您的例子中,你可以創建一個代表的位置範圍:
var span = pNode.childNodes[1];
var spanText = span.firstChild;
var range = document.createRange();
// Next line takes into account whitespace at the start of the text node
range.setStart(spanText, 6);
// For illustration, create a range that contains the letter "a" and selects it
range.setEnd(spanText, 7);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
一旦你有一個範圍,你可以使用它的各種事情,如插入節點,定義用戶選擇和應用格式到Range所封裝的內容。
IE定義完全不同的對象稱爲TextRange具有根本不同的基於文本的方法,但用於許多相同的目的。要獲得與前面示例相同的TextRange,可以使用以下示例:
var textRange = document.body.createTextRange();
textRange.moveToElementText(pNode);
textRange.moveStart("character", 17);
textRange.collapse();
// For illustration, create a range that contains the letter "a" and selects it
textRange.moveEnd("character", 1);
textRange.select();
Bobince,這正是我正在尋找的。你的代碼完美無缺!非常感謝! – Steve 2010-01-22 03:34:42