0

コードの挿入にGoogleのsample codeを変更しようとしています。ファイルmanifest.jsonは、バックグラウンドスクリプトが含まれます。Chrome拡張機能のコンテンツスクリプトから変数を取得するにはどうすればよいですか?

"background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 

を、私はcontent scriptを追加します。

"content_scripts": [ 
    { 
     "matches": ["*://*/*"], 
     "js": ["filter.js"] 
    } 
    ], 

今、私は、ユーザーが拡張機能のボタンをクリックしたときにfilter.jsで定義された関数foo()を呼びたいです。私はbackground.jsでこれを行う:

私は関数を実行することができますが、 testText変数を渡すことはできません

function foo(test) { 
    alert('Test: ' + String(test)); 
} 
var testText = 'foo'; 

として foo()filter.jsで定義されている
chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript({ 
    code: 'foo(testText);' 
    }); 
}); 

。私はVM3181:1 Uncaught ReferenceError: testText is not definedを得る。

私は変数を間違って参照していますが、正しく行うにはどうすればよいですか? Googleからの再利用

答えて

1

sendMessageonMessageを見てみましょう、例:

background.jsで:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.sendMessage(tab.id, {greeting: "foo"}, function(response) { 
     console.log(response.farewell); 
    }); 
}); 

そしてfilter.js中:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
     if (request.greeting == "foo") { 
      //your Foo function can be called 
      sendResponse({farewell: "bar"}); 
     } 
}); 
関連する問題