【问题标题】:Firefox Extension: Get selected textFirefox 扩展:获取选定的文本
【发布时间】:2009-07-17 01:51:58
【问题描述】:

我正在开发一个简单的 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() 获得选择,我不知道为什么 :(

【问题讨论】:

  • element.value.substring(element.selectionStart, element.selectionEnd);工作。

标签: javascript firefox selection


【解决方案1】:

您的问题是 document.commandDispatcher.focusedWindow 将指向一个 chrome 窗口,我怀疑您实际上想要一个内容窗口。尝试将其替换为 content.getSelection()

【讨论】:

  • 我必须注意到我想在文本区域中获取选定的文本。这仅适用于 selectionStart 和 selectionEnd。
【解决方案2】:

这适用于firefox javascripting,所以应该没问题

window.getSelection().toString();

我的猜测是 document.commandDispatcher.focusedWindow 失败

【讨论】:

    【解决方案3】:

    这是普通的 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 建议的那样

    【讨论】:

      猜你喜欢
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多