我正在开发一个简单的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 :(得分:10)
你的问题是document.commandDispatcher.focusedWindow
将指向一个chrome窗口,我怀疑你真的想要一个内容窗口。尝试将其替换为content.getSelection()
答案 1 :(得分:0)
这适用于firefox javascripting,所以应该没问题
window.getSelection().toString();
我的猜测是document.commandDispatcher.focusedWindow失败
答案 2 :(得分: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建议