10

単純な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()で選択を取得できず、理由がわからないことです:(

4

3 に答える 3

10

あなたの問題は、document.commandDispatcher.focusedWindowあなたが実際にコンテンツウィンドウが欲しいと思うクロームウィンドウを指しているということです。それを置き換えてみてくださいcontent.getSelection()

于 2009-07-16T17:51:58.017 に答える
1

これはFirefoxのJavaScriptで機能するので、問題ないはずです

window.getSelection().toString();

私の推測では、document.commandDispatcher.focusedWindowは失敗します

于 2009-07-16T15:16:45.927 に答える
0

これは通常のFirefox拡張機能ですか、それともJetPackFirefox拡張機能ですか。

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が提案したようにウィンドウに直接アクセスすることもできます

于 2009-07-16T15:36:51.613 に答える