sendMessage并且onRequest是 。
如果您需要支持 ,请使用 和 :
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { // Warning: Chrome 19- [receiver]});chrome.extension.sendRequest(message, optional_sendResponse);
对于 ,请使用和:chrome.extension. **onMessage**``chrome.extension.**sendMessage**
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { // Chrome 20+});chrome.extension.sendMessage(message, optional_sendResponse);
对于 ,请使用和。chrome **.runtime.**onMessagechrome **.runtime.**sendMessage
注意:从Chrome 26开始,仍支持不推荐使用的方法,尽管未记录。如果有机会,请更新您的扩展程序以使用新方法,以确保您的扩展程序将来仍然可以使用。
解决方法尝试在内容脚本和后台脚本之间进行通信时,出现以下错误:
Port error: Could not establish connection. Receiving end does not exist.Error in event handler for ’undefined’: Cannot read property ’message’ of undefined TypeError: Cannot read property ’message’ of undefined
background.js
function onRequest(request,sender,callbackFunction) { console.log('Me (BS) became this Message:' + request.message); sendResponse({message: request.message})};chrome.extension.onRequest.addListener(onRequest);
streamcloud.js
function contactBackground(nachricht){ chrome.extension.sendMessage({message: nachricht},function(response) {console.log('The Background Script got the following Message: ' + response.message); });}
和我的 manifest.json
{ 'name': 'InstantWatch - Dev','manifest_version': 2,'version': '0.7','permissions': ['tabs','http://*/','https://*/'],'background': { 'scripts': ['background.js'] },'browser_action': { 'default_title': 'InstantWatch','default_icon' : 'icon.ico' },'content_scripts': [ { 'matches': ['http://*/*','http://*/*'],'js': ['jquery.js','streamcloud.js'] } ]}
我找到了添加一个background_page:“background.html”和一个空白background.html的解决方案,但是由于manifest_version:2不支持background_page,所以我不能使用它。