2011-06-04 35 views
5

可以在沒有任何用戶交互的情況下創建Selection對象嗎? window.getSelection()確實會返回Selection對象,但您不能modify()它,除非用戶進行了某種選擇。是否可以在沒有任何用戶交互的情況下創建選擇對象?

是否有可能創建一個選擇,從頁面上的第一個元素開始,然後能夠modify()它,而不需要用戶做任何事情?

例子:http://jsfiddle.net/niklasvh/L5M3U/

它不選擇在頁面加載任何東西,但如果你點擊任何東西它確實做出選擇。

回答

9

如果我明白你在問什麼,那麼是的,你可以使用它的編程方式addRange()方法設置選擇。例如,選擇整個文檔的<body>元素的頁面加載時,你可以這樣做:

function selectBody() { 
    var range = document.createRange(); 
    range.selectNode(document.body); 
    var sel = window.getSelection(); 
    sel.removeAllRanges(); 
    sel.addRange(range); 
} 

window.onload = selectBody; 

這並不在IE < 9,它有一個完全不同的方法來範圍和選擇工作。

+0

謝謝!正是我在找的東西。我知道IE不兼容,他們的TextRange等,這將做得很好。 – Niklas 2011-06-04 23:02:05

+1

請注意,'range.selectNode(element)'中的元素''需要'innerHTML'內容。否則這將無法工作 – Jonathan 2013-02-19 01:05:44

相關問題