从弹出窗口到内容脚本的 Chrome 扩展消息
Chrome extension messaging from popup to content script
我正在尝试从我的弹出窗口.js向内容发送消息.js但我只是不明白为什么它不起作用。
这是我的设置:
manifest.json
{
"manifest_version": 2,
"name": "Form Builder",
"description": "This extension populates a form.",
"version": "0.1",
"content_scripts": [{
"all_frames": true,
"matches": ["http://*/*", "https://*/*"],
"js" : [
"/js/jquery/jquery.min.js",
"/js/formLoader.js",
"/js/content.js"
]
}],
"options_page": "/html/options.html",
"permissions": ["https://localhost:8443/",
"tabs", "activeTab", "storage", "background"
],
"icons": { "16": "/images/icons/wb_icon_16.png",
"48": "/images/icons/wb_icon_48.png",
"128": "/images/icons/wb_icon_128.png"
},
"browser_action": {
"default_popup": "/html/popup.html"
}
}
内容.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse){
sendResponse("received message: " + request);
formLoader.setFormData(request, sendResponse);
// Why isn't this getting executed when I send a message from popup?
sendResponse("Thank you");
});
弹出窗口.js
var popup = {
// a few parts snipped out for brevity
sendMessage: function(message) {
chrome.tabs.sendMessage(tab.id, message, function(message) {
console.log(chrome.runtime.lastError);
popup.handleCallbacks(message);
});
},
handleCallbacks: function (message) {
console.log("handleCallbacks: " + message);
}
}
表单加载器.js
var formLoader = {
init : function() {
$("#PostingBody").val("formLoader.init");
},
setFormData: function(data, callback) {
callback("[formLoader.js] got data: " + data);
}
}
formLoader.init();
当我做这样的事情时:
popup.sendMessage(data);
在我的控制台中,我得到:
Object {message: "Could not establish connection. Receiving end does not exist."}
handleCallbacks: undefined
为什么没有接收端? 我对内容中的听众做错了什么.js?
感谢:这个答案来自另一个问题
对于 Chrome 26+,请使用 chrome.runtime.onMessage 和 chrome.runtime.sendMessage。
尽管我很肯定,但我发现了几个页面和参考文献没有提到这一点。
相关文章:
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 如何让JS脚本在导航后继续运行(谷歌chrome控制台)
- 是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Google Chrome扩展程序可以检测所有脚本何时加载完成吗
- 加载Chrome扩展中的脚本错误
- chrome扩展-内容脚本随需应变
- Chrome存储API无法使用内容脚本
- Chrome内容脚本制作cookie;chrome重新启动时,cookie会被删除.如何使其稳定
- Chrome扩展:加载窗口后执行脚本
- 如何动态添加或删除Chrome扩展、内容脚本、javascript文件
- 内容安全策略指令:;脚本src'self'blob:文件系统:chrome扩展资源:“;获取是否时
- Chrome审核:在外部CSS文件之间的头中发现了1个内联脚本块&”;
- 为内容脚本[Chrome扩展]获取本地存储价值的简单方法
- 拒绝加载脚本Chrome扩展
- InnerText在内容脚本Chrome扩展中返回未定义的内容
- 未在内容脚本Chrome扩展上触发事件
- 选项启用了内容脚本Chrome扩展,没有背景页
- 动态加载内容脚本(chrome扩展)