2009-02-06 82 views
5

我正在研究Firefox擴展,它將操縱突出顯示的文本。如何通過Firefox擴展操縱選定文本

在一個獨立的頁面,我可以與所選文本:

selectedText = document.selection?document.selection.createRange().text; 

然後我會操縱與字符串操作上有問題的textarea的選定的文本。不幸的是,這是不可能的插件,因爲我不知道用戶選擇的文本在哪裏。

有沒有辦法獲取文本被選中元素的名稱或改變選定的文本沒有元素的名稱?

回答

4
selectedText = content.getSelection().toString(); 
+2

嗯,我讀了「我正在開發一個Firefox擴展......」 – altblue 2009-03-22 00:05:43

0

你需要從用戶的選擇得到的範圍對象:

var userSelection; 
if (window.getSelection) 
    userSelection = window.getSelection(); 
else if (document.selection) // should come last; Opera! 
    userSelection = document.selection.createRange(); 

var rangeObject = getRangeObject(userSelection); 

...

function getRangeObject(selectionObject) { 
    if (selectionObject.getRangeAt) 
     return selectionObject.getRangeAt(0); 
    else { // Safari! 
     var range = document.createRange(); 
     range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset); 
     range.setEnd(selectionObject.focusNode, selectionObject.focusOffset); 
     return range; 
    } 
} 

... 

範圍對象有開始和結束容器節點等。

更多信息可以在Quirksmode here和w3.org上找到。here

+0

感謝您的信息。我嘗試將這些函數放入我的overlay.js中,但無法設置在安裝插件後警告()出任何突出顯示的文本。 我在這裏有點新手,但將Safari和Opera代碼放入Firefox擴展中可能會出現問題嗎? – 2009-02-06 08:11:45