Monday, May 20, 2024
120
rated 0 times [  127] [ 7]  / answers: 1 / hits: 33748  / 12 Years ago, sat, august 4, 2012, 12:00:00

When trying to communicate between my Content- and Background Script I get the following errors:



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


and my 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]
}
]
}


I found the solution to add an background_page: background.html with an empty background.html, but since background_page isn't supported since manifest_version: 2, I can't use that.


More From » google-chrome

 Answers
10

sendMessage and onRequest are not compatible.



If you need to support Chrome 19 and earlier, use onRequest and sendRequest:



chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// Warning: Chrome 19- [receiver]
});
chrome.extension.sendRequest(message, optional_sendResponse);





For Chrome 20 - 25, use chrome.extension.onMessage and chrome.extension.sendMessage:



chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
// Chrome 20+
});
chrome.extension.sendMessage(message, optional_sendResponse);





For Chrome 26+, use chrome.runtime.onMessage and chrome.runtime.sendMessage.






Note: As of Chrome 26, the deprecated methods are still supported, albeit undocumented. If you get a chance, update your extension to use the new methods, to ensure that your extension will still work in the future.

See this answer for code to create a which is compatible with Chrome 20+.


[#83850] Friday, August 3, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
irvingcarloe

Total Points: 677
Total Questions: 109
Total Answers: 96

Location: Svalbard and Jan Mayen
Member since Sun, Sep 25, 2022
2 Years ago
irvingcarloe questions
Wed, Mar 31, 21, 00:00, 3 Years ago
Tue, Aug 4, 20, 00:00, 4 Years ago
Fri, Jul 3, 20, 00:00, 4 Years ago
;