Chrome扩展消息在内容和后台之间传递
Chrome extension message passing between content and background
我已经对此进行了几个小时的测试,我还采取了一个在当时已知有效的例子。在这里看到的:https://stackoverflow.com/a/27829709/2430488
它只是不适合我或我不知道如何测试。我正在打开开发人员工具,也是扩展开发人员工具,但在任何窗口中都没有记录任何内容。
我使用的代码:
manifest.json
{
"manifest_version": 2,
"name": "Some test",
"description": "https://stackoverflow.com/questions/27823740",
"version": "0",
"background": {
"scripts": [
"background.js"
]
},
"permissions": ["tabs", "<all_urls>"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["cont.js"]
}
]
}
cont.js
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.message && (msg.message == "DIMENSION")) {
var dimension = getPageDiemension(document.documentElement);
console.log('Dimension:', dimension);
sendResponse(dimension);
}
return true;
});
getPageDiemension = function(currentDom){
return {
x: 0,
y: 0,
w: currentDom.scrollWidth,
h: currentDom.scrollHeight
}
}
background.js
getPageDimension = function (){
chrome.tabs.query({active: true, highlighted: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, { message: "DIMENSION" }, function(response){
if (response !== null) console.log('Response:', response);
else console.log('Response is null');
});
});
};
请帮忙,我真的不知道我做错了什么,我一直在看文档在过去的几个小时,但我不明白为什么不工作。
谢谢。
正如rsanchez所提到的,您的背景定义了一个函数getPageDimension
。
它永远不会被调用,所以你的扩展什么也不做。似乎没有任何错误,你只是从来没有做任何事情。
你需要绑定对getPageDimension
的调用到一些事件,例如点击浏览器动作
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- Chrome扩展:在后台页面和网站页面脚本之间进行通信的最佳方法
- 如何在后台.js和弹出窗口.js之间进行通信
- Chrome 扩展程序:无法让消息传递在后台脚本和内容脚本之间正常工作
- chrome扩展的浏览器操作、后台脚本和内容脚本之间通信的上下文和方法
- Chrome扩展消息在内容和后台之间传递
- 如何在后台脚本和页面(弹出)脚本之间进行通信
- Chrome 扩展 js:在后台.js和弹出窗口.js之间共享功能
- 在后台和内容脚本之间通过promise传递一个响应回调