2011-12-16 80 views
6

我正在使用div [contenteditable = true]編輯wysiwyg編輯器 ,我想設置從節點A的偏移量X到節點B的偏移量Y的選擇範圍。我做得很好上Firefox和IE9,代碼:在JavaScript IE8中設置選擇範圍

var range = document.createRange(); 
range.setStart(selectNode, 0); 
range.setEnd(selectNode, selectNode.textContent.length); 
var sel = window.getSelection(); 
sel.removeAllRanges(); 
sel.addRange(range); 

但在IE8的範圍內,目的是完全不同的,它沒有setStart/SETEND和選擇對象沒有刪除/東西的AddRange。 請幫忙,

回答

3

我有一個類似的問題,發現這個填充工具這是對我非常有用,因爲我不能在我的情況下使用瘦長: http://bl.ocks.org/visnup/3456262

編輯:原始鏈接確實已經死了。回首我的舊代碼,它看起來像填充工具從未進入釋放的代碼,我們只需用特徵檢測去如下:

if(window.getSelection || document.selection){ 

然後鼠標鬆開:

var range; 
if(window.getSelection){ 
    var selection = window.getSelection(); 
    range = selection.getRangeAt(0); 
} else if(document.selection){ 
    range = document.selection.createRange(); 
    if(!range.surroundContents){ 
     // then give up, feature not fully implemented 
    } 
} 
// now do stuff with range (i.e. the selection) 

...和IE8用戶因此不支持該功能。

但是並非如此:如果您必須支持IE8,則可能會有效。它看起來既精簡又全面。

+1

該解決方案僅壓縮800字節,並按照要求定位IE8。與Rangely.js相比,這可能是更好的解決方案。 – Roberto 2014-05-05 22:26:53