2009-07-16 10 views
10

Je travaille sur une extension Firefox simple et je veux obtenir le texte sélectionné. J'ai essayé ceci:Firefox Extension: Obtenir le texte sélectionné

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

Le problème est que je n'obtiens pas la sélection avec document.commandDispatcher.focusedWindow.getSelection() et je ne sais pas pourquoi :(

+0

element.value.substring (element.selectionStart, element.selectionEnd); travaillé. – Fu86

Répondre

10

Votre problème est que document.commandDispatcher.focusedWindow va pointer vers une fenêtre de chrome, où je Je suppose que vous voulez vraiment une fenêtre de contenu. Essayez de remplacer cela par content.getSelection()

+0

J'ai dû remarquer que je voulais obtenir le texte sélectionné dans une zone de texte. Cela ne fonctionnait qu'avec selectionStart et selectionEnd. – Fu86

0

Cela fonctionne dans Firefox javascripting, devrait donc être OK

window.getSelection().toString(); 

Je pense que document.commandDispatcher.focusedWindow échoue

0

est-e est une extension Firefox normale ou est-ce une extension Firefox JetPack?

En Jetpack il serait

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

ou vous pouvez simplement accéder à la fenêtre directement avec window.getSelection() comme dcaunt a suggéré

Questions connexes