我基本上是在尝试执行Chrome扩展程序文档中的代码。那就是我被困住的地方。
我正在尝试从内容脚本>>传递值背景页面(XHR)。
我在控制台中的错误是:
端口错误:无法建立连接。接收端不存在。 miscellaneous_bindings:236
'undefined'的事件处理程序出错:无法读取未定义的属性'告别'TypeError:无法读取未定义属性'告别'
在chrome-extension://bccajmddlghglocgmkpkpbiankmhlfkc/js/content_script.js:23:23
在miscellaneous_bindings:281:11
在chrome.Event.dispatchToListener(event_bindings:387:21)
在chrome.Event.dispatch_(event_bindings:373:27)
在chrome.Event.dispatch(event_bindings:393:17)
在Object.chromeHidden.Port.dispatchOnDisconnect(miscellaneous_bindings:239:27)
content_script.js 如下所示:
function func1(){
$(function() {
$('.genericStreamStory').each(function(){
var link = $(this).find('.uiStreamSource a').attr('href');
$(this).find('.uiStreamFooter').find('.a1').remove();
$(this).find('.uiStreamFooter').append("<span class='a1' style='color:red !important;'> · Sample</span>");
$(this).find('.a1').click(function(){
alert('hi');
chrome.extension.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
console.log('testing');
}); //end of click handler
}); //end of 'each' function
});
}
func1();
window.setInterval("func1()", 1000);
发送消息声明chrome.extension.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
取自Chrome Extension Documentation。
background.js :
$(function() {
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("background");
console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});// end of onMessage listener
});
onMessage Listener的代码取自Chrome文档。
最后, manifest.json :
{
"name": "Facebook123",
"version": "0.1",
"description": "Sample",
"content_scripts": [
{
"matches": ["https://*.facebook.com/*"],
"js": [
"/js/external/jquery.js",
"/js/content_script.js"
]
}
],
"background": {
"scripts": ["/js/background.js"]
},
"manifest_version": 2
}
看起来监听器似乎没有“可用”来处理conrent_script.js发送的消息。
content_script.js中的Click Handler正在运行。当我点击跨度'a1'时,弹出'hi'警告框并在控制台中打印消息'testing'。
可能是什么错误?
答案 0 :(得分:1)
打开背景页面的控制台(Where to read console messages from background.js in a Chrome extension?)。
您会看到类似“ReferenceError:$ is not defined”的错误,因为您在没有加载jQuery的情况下使用$(function() { });
。
您不必在后台页面中等待domready事件,因此删除$(function(){
和});
可以解决问题。另一种解决方法是包含jQuery:
"background": {
"scripts": [
"/js/external/jquery.js",
"/js/background.js"
]
},
通常,“端口错误”表示您正在尝试发送消息,而没有人正在侦听消息。在这种情况下,侦听器由于错误而没有绑定,但是通常你会发现序列(事件绑定,事件触发)的时间非常严格,需要修复。