2009-07-16 2 views
10

Я работаю над простым расширением Firefox, и хочу получить выделенный текст. Я попытался это:Расширение Firefox: Получить выделенный текст

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

Проблема в том, что я не получаю выбор с document.commandDispatcher.focusedWindow.getSelection(), и я не знаю почему :(

+0

element.value.substring (element.selectionStart, element.selectionEnd); работал. – Fu86

ответ

10

Ваша проблема заключается в том, что document.commandDispatcher.focusedWindow будет указывать на окно хром, где я предположите, что вы действительно хотите окно содержимого. Попробуйте заменить это на content.getSelection()

+0

Я должен был заметить, что хочу получить выделенный текст в текстовом поле. Это работало только с selectStart и selectionEnd. – Fu86

0

Это работает в Firefox javascripting, так должно быть в порядке

window.getSelection().toString(); 

Я думаю, что document.commandDispatcher.focusedWindow терпит неудачу

0

является й является обычным расширением Firefox или является расширением JetPack Firefox.

В Jetpack было бы

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

или вы можете просто открыть окно непосредственно window.getSelection() как dcaunt предложил

Смежные вопросы