代码之家  ›  专栏  ›  技术社区  ›  f00860

火狐扩展:获取选定文本

  •  10
  • f00860  · 技术社区  · 15 年前

    我正在开发一个简单的火狐扩展,我想得到所选的文本。我试过这个:

    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()。 我不知道为什么:(

    3 回复  |  直到 15 年前
        1
  •  10
  •   sdwilsh    15 年前

    你的问题是 document.commandDispatcher.focusedWindow 将指向一个Chrome窗口,我怀疑您实际上想要一个内容窗口。试着把它换成 content.getSelection()

        2
  •  0
  •   David Snabel-Caunt    15 年前

    这在firefox javascripting中有效,应该可以

    window.getSelection().toString();
    

    我猜document.commandDispatcher.focusedWindow失败了

        3
  •  0
  •   AutomatedTester    15 年前

    这是普通的火狐扩展还是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建议的那样