2010-05-11 134 views
2

一個簡單的問題:如何以編程方式在FireFox中選擇頁面的文本片段?例如,有一段文字,用戶點擊按鈕,從第10到第15的符號被選中,就像用戶以常規方式拖動鼠標一樣。Firefox選擇文本範圍

+0

你從10號到15號的符號究竟意味着什麼?段落元素中的字符? – 2010-05-11 20:17:09

回答

3

在Firefox中,你可以使用Range對象,如W3C規定。

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Range test</title> 
    <style> 
     #trigger { background: lightgreen } 
    </style>     
    </head>      
    <body>      
    <p id="test">This is some (rather short) text.</p> 
    <span id="trigger">→ Click here! ←</span> 
     <!-- Yes, I know, ‘Click here!’ is an evil message --> 
    <script> 
var testCase = function() { 
    var userSelection; 

    if (window.getSelection) { // W3C default 
     userSelection = window.getSelection(); 
    } // an extra branch would be necessary if you want to support IE 

    var textNode = document.getElementById('test').firstChild; 
    var theRange = document.createRange(); 

    // select 10th–15th character (counting starts at 0) 
    theRange.setStart(textNode, 9); 
    theRange.setEnd(textNode, 14); 

    // set user selection  
    userSelection.addRange(theRange); 
}; 

window.onload = function() { 
    var el = document.getElementById('trigger'); 
    el.onclick = testCase; 
}; 
    </script> 
    </body> 
</html> 

請注意,您必須得到TextNode設置的選擇,這是<p>元素的firstChild。另外請注意,這個例子在IE中不起作用,你必須使用一些專有方法。一個很好的介紹在QuirksMode

1

我不確定是否有辦法對像段落這樣的任意DOM元素執行此操作,但對於textarea元素,我相信您需要使用selectionStartselectionEnd屬性並指定從哪裏開始和結束。

var textarea = document.getElementsByTagName('textarea')[0]; 
textarea.selectionStart = 10; 
textarea.selectionEnd = 15; 

希望這會有所幫助!