簡體   English   中英

在 javascript IE8 中設置選擇范圍

[英]Set selection range in javascript IE8

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

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

但是在 IE8 上,range 對象完全不同,它沒有 setStart/setEnd,並且選擇對象沒有 remove/addRange 的東西。 請幫忙,

看看 rangy。 它是一個跨瀏覽器范圍/選擇 API。 這可能就是你所需要的。

http://code.google.com/p/rangy/

我有一個類似的問題,發現這個 polyfill 對我非常有用,因為在我的情況下我不能使用 rangy: http : //bl.ocks.org/visnup/3456262

編輯:原始鏈接確實已經死了。 回顧我的舊代碼,看起來 polyfill 從未進入發布代碼,我們簡單地進行了功能檢測,如下所示:

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 用戶。

然而,一切都沒有丟失: Github 上有一個更新的(比我原來的答案)polyfill,如果您必須支持 IE8,它可能會起作用。 它看起來既簡潔又全面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM