[英]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。 這可能就是你所需要的。
我有一個類似的問題,發現這個 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.