2017-07-30 3 views
0

Chrome拡張機能を構築しています。info.selectionTextの値をコンテンツスクリプトに渡します。

ライトボックス:今だけ渡された値をアラートの

function setTranslation(info, tab) { 
    var parseWord = 'var word = ' + info.selectionText; 
    alert(parseWord); // works here 
    chrome.tabs.executeScript(tab.id, { 
     code: parseWord 
    }, function() { 
     chrome.tabs.executeScript(tab.id, { 
      file: 'lightbox.js' 
     }); 
    }); 

lightbox.jsを

background.js:私はをクリックし、コンテキストメニューのコールバックとしてトリガされ、この機能を持っています.js

alert(word); 

値を渡す方法を見つけようとしています(info.selectionText)からコンテンツスクリプト(lightbox.js)に変更します。 background.jscodeプロパティの値が単純な文字列である場合に機能します。しかし、それをinfo.selectionTextという値で連結すると、undefinedが警告されます。

これはアクションの非同期性のためですか? それを調整する方法や、メッセージの受け渡しを使わなければならない方法はありますか?

答えて

1

info.selectionTextがabcであると仮定すると、注入コード:var word = abcを見てください。ここであなたが見ることができるようにabcここでは文字列ではなく、定義されていない変数名です!

var parseWord = 'var word = ' + JSON.stringify(info.selectionText); 

堅牢なソリューションは、組み込み引用符をエスケープして、文字列の周りに二重引用符を追加しJSON.stringifyを使用することです

関連する問題