2009-07-16 35 views
10

Tôi đang làm việc trên một Tiện ích mở rộng Firefox đơn giản và tôi muốn nhận được văn bản đã chọn. Tôi cố gắng này:Tiện ích mở rộng của Firefox: Nhận văn bản đã chọn

var WordCount = { 
    /* ... */ 
    changeSelected: function() { 
     var selectedText = this.getSelection(); 
     var words = this.countWords(selectedText); 
     this.changeStatus(words, " selected"); 
     //alert(selectedText); 
    }, 
    getSelection: function(e) { 
     var focused_window = document.commandDispatcher.focusedWindow; 
     var sel_text = focused_window.getSelection(); 
     return sel_text.toString();  
    } 
} 
window.addEventListener("select", function(e) { WordCount.changeSelected(); }, false); 

Vấn đề là, rằng tôi không nhận được sự lựa chọn với document.commandDispatcher.focusedWindow.getSelection() và tôi không biết tại sao :(

+0

element.value.substring (element.selectionStart, element.selectionEnd); đã làm việc. – Fu86

Trả lời

10

Vấn đề của bạn là document.commandDispatcher.focusedWindow sẽ được trỏ đến một cửa sổ chrome, nơi tôi nghi ngờ bạn thực sự muốn có một cửa sổ nội dung. Hãy thử thay thế bằng content.getSelection()

+0

Tôi đã nhận thấy rằng tôi muốn nhận được văn bản được chọn trong một vùng văn bản. Điều này chỉ làm việc với selectionStart và selectionEnd. – Fu86

0

này hoạt động trong firefox javascripting, vì vậy nên được OK

window.getSelection().toString(); 

tôi đoán là document.commandDispatcher.focusedWindow không

0

là thứ là một phần mở rộng Firefox bình thường hoặc là một phần mở rộng JetPack Firefox.

Trong JetPack nó sẽ là

var doc = jetpack.tabs.focused.contentWindow; 
if (doc.wrappedJSObject){ //This just checks if Firefox has put a XPCNativeWrapper around it for security 
    win = doc.wrappedJSObject; 
} 

hoặc bạn chỉ có thể truy cập vào cửa sổ trực tiếp với window.getSelection() như dcaunt gợi ý

Các vấn đề liên quan