2009-07-16 14 views
10

Pracuję nad prostym rozszerzeniem przeglądarki Firefox i chcę uzyskać zaznaczony tekst. Próbowałem to:Rozszerzenie przeglądarki Firefox: Uzyskaj zaznaczony tekst

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

Problem polega na tym, że ja nie dostać wybór z document.commandDispatcher.focusedWindow.getSelection() i nie wiem dlaczego :(

+0

element.value.substring (element.selectionStart, element.selectionEnd); pracował. – Fu86

Odpowiedz

10

Twój problem polega na tym document.commandDispatcher.focusedWindow ma być skierowany do okna chrome, gdzie podejrzewasz, że faktycznie chcesz okno treści. Spróbuj zastąpić to z content.getSelection()

+0

Musiałem zauważyć, że chcę uzyskać zaznaczony tekst w obszarze tekstowym. To działało tylko z selectionStart i selectionEnd. – Fu86

0

To działa w Firefoksie javascripting, więc powinno być OK

window.getSelection().toString(); 

Domyślam się, że document.commandDispatcher.focusedWindow nie

0

Czy th jest normalnym rozszerzeniem Firefox lub jest to rozszerzenie JetPack Firefox.

W Jetpack byłoby

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

lub można po prostu otworzyć okno bezpośrednio z window.getSelection() jak dcaunt zasugerował