2009-07-16 21 views
10

私は単純なFirefox拡張機能を開発中で、選択したテキストを取得したいと考えています。私はこれを試してみました: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

element.value.substring(element.selectionStart、element.selectionEnd);働いた。 – Fu86

答えて

10

あなたの問題はdocument.commandDispatcher.focusedWindowはどこI、クロムウィンドウを指してしようとしていることである提案のように、あなただけのwindow.getSelection()と直接ウィンドウにアクセスすることができますでしょう実際にコンテンツウィンドウが必要だと思われます。それを置き換えてみてくださいcontent.getSelection()

+0

テキストエリアで選択したテキストを取得する必要があることに気づかなければなりませんでした。これは、selectionStartとselectionEndでのみ機能します。 – Fu86

0

これは、Firefoxで動作しますなぜ私にはわからないということであり、 javascripting、そう

window.getSelection().toString(); 

私の推測では、document.commandDispatcher.focusedWindowが

0

は番目です失敗したということですOKでなければなりません通常のFirefox拡張機能ですか、それともJetPack Firefox拡張機能です。ジェットパックで

それは

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; 
} 

またはdcauntが

関連する問題