2009-07-16 15 views
10

Ich arbeite an einer einfachen Firefox-Erweiterung und ich möchte den ausgewählten Text erhalten. Ich versuchte dies:Firefox Erweiterung: Get ausgewählten Text

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); 

Das Problem ist, dass ich nicht bekommen Sie die Auswahl mit document.commandDispatcher.focusedWindow.getSelection() und ich weiß nicht, warum :(

+0

element.valueString (element.selectionStart, element.selectionEnd); hat funktioniert. – Fu86

Antwort

10

Ihr Problem ist, dass document.commandDispatcher.focusedWindow zu einem Chrom-Fenster zu zeigen wird, wo ich vermute, dass du eigentlich ein Inhaltsfenster willst. Ersetzen Sie das durch content.getSelection()

+0

Ich musste feststellen, dass ich den ausgewählten Text in einem Textfeld bekommen möchte. Dies funktionierte nur mit selectionStart und selectionEnd. – Fu86

0

Dies funktioniert in Firefox Javascripting, sollte so OK sein

window.getSelection().toString(); 

Meine Vermutung ist, dass document.commandDispatcher.focusedWindow

0

ist th versagt ist eine normale Firefox-Erweiterung oder ist es eine JetPack Firefox-Erweiterung.

In JetPack wäre es

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; 
} 

oder Sie können das Fenster direkt mit window.getSelection() zugänglich wie dcaunt

vorgeschlagen
Verwandte Themen