2012-10-31 19 views
21

この関数は以下のようなコールバックを持っています:function(任意の結果の配列){...};about chrome.tabs.executeScript(id、details、callback)

しかし、結果の意味はわかりません。例えば

、 chrome.tabs..executeScript(ヌル、 {コード: "VAR X = 10"}、 関数(){});

"x"をコールバックに戻すにはどうすればよいですか?

+0

[Googleグループのこの質問](https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-extensions/Nco_o24bZ9A)をご覧ください。 – Stan

答えて

31

スクリプトの結果は評価される最後の式です。だから、あなたが使用することができ、あなたの例では:

chrome.tabs.executeScript(null, {code:"var x = 10; x"}, 
    function(results){ console.log(results); }); 

これは、拡張機能のコンソールに[10]を記録します。

結果は実際には値の配列です。ページに複数のフレームがある場合は、スクリプトのそれぞれに注入してすべての注入の結果を取得するように指定できるからです。 executeScriptの仕様を参照してください。 allFrames:trueを指定しないと、の結果は常に1つの要素配列になります。

+0

私はこの 'chrome.tabs.executeScript(null、{code:" var x = 10; x "}、function(results){alert(results);});を持っていますが、警告として未定義になります。これがなぜ起こるのかあなたは何か手がかりがありますか? – user1032613

+2

@ user1032613あなたの拡張機能に現在のタブでスクリプトを実行する権限がない場合に発生します。ドメインが 'manifest.json'の' permissions'設定に含まれていることを確認してください。 – rsanchez

+1

ありがとう!そして、manifest.jsonに対する変更は、拡張機能を再インストールした後にのみ有効になることに気付きました。 – user1032613