Ответ 1
Ваша проблема в том, что document.commandDispatcher.focusedWindow
будет указывать на хромированное окно, где я подозреваю, что вы действительно хотите окно содержимого. Попробуйте заменить это на content.getSelection()
Я работаю над простым расширением 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(), и я не знаю, почему: (
Ваша проблема в том, что document.commandDispatcher.focusedWindow
будет указывать на хромированное окно, где я подозреваю, что вы действительно хотите окно содержимого. Попробуйте заменить это на content.getSelection()
Это работает в firefox javascripting, поэтому должно быть ОК
window.getSelection().toString();
Я предполагаю, что document.commandDispatcher.focusedWindow не работает
Является ли это обычным расширением 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