2009-07-16 21 views
10

Basit bir Firefox Uzantısı üzerinde çalışıyorum ve seçili metni almak istiyorum. Bu çalıştı:Firefox Uzantısı: Seçilen metni al

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

Sorun) document.commandDispatcher.focusedWindow.getSelection (ile seçim alamadım ve :(

+0

element.value.substring (element.selectionStart, element.selectionEnd) ile değiştirmeyi deneyin; çalıştı. – Fu86

cevap

10

Senin sorunun document.commandDispatcher.focusedWindow, nerede bir krom penceresi açılmış olacak olmasıdır aslında bir içerik penceresi istediğinizden şüpheleniyorsunuz. Bunu content.getSelection()

+0

Seçilen metni bir textarea'da almak istediğimi fark ettim. Bu sadece selectionStart ve selectionEnd ile çalıştı. – Fu86

0

Bu ateş çalışır neden bilmiyorum yani, javascripting, böylece

window.getSelection().toString(); 

Benim tahminim document.commandDispatcher.focusedWindow

0

inci mı başarısız olduğunu sorun olmaz normal bir Firefox eklentisidir veya bir JetPack Firefox uzantısıdır.

Jetpack

o

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

olurdu ya dcaunt

önerdi gibi sadece window.getSelection() doğrudan pencere erişebilirsiniz