Chrome - 消息传递 - 从弹出点击到特定选项卡上的上下文脚本
Chrome - Message passing - From popup click to context script on specific tab
你能告诉我为什么下面的代码不起作用吗?这是我的代码:
Popup.js(不是背景脚本):
chrome.tabs.create({url: url}, function(tab) {
chrome.tabs.executeScript(tab.id, {file: 'connect.js', allFrames:true}, function() {
chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});
});
内容脚本:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
console.log(message);
// Handle message.
// In this example, message === 'whatever value; String, object, whatever'
});
还有我的清单:
{
"name": "AN App",
"version": "1.0",
"description": "To connect",
"permissions": [
"storage",
"activeTab",
"tabs",
"https://*/*"],
"browser_action": {
"default_popup": "popup.html"
},
"content_scripts": [{
"matches": ["https://*/*"],
"js": ["connect.js"]
}],
/*
"background": {
"scripts": ["background.js"]
},*/
"manifest_version": 2
}
我不明白,选项卡中的控制台调试不显示任何内容...
我也尝试从弹出窗口到背景,然后从背景到选项卡,但都没有发生(我在 chrome 扩展方面很新,所以我希望你能帮助我)
谢谢,
此致
马丁
我找到了解决方案。当我从弹出窗口中的 JS 调用 chrome.tabs.create 时,它会关闭弹出窗口中的代码 运行 并且永远不会发送消息。
因此,我没有在链接到弹出窗口的 JS 中调用 chrome.tabs.create,而是向后台脚本发送消息,后台脚本调用 chrome.tabs.create(这样它在后台运行并且代码不会停止执行)。
然后消息功能像 chrome 文档说的那样正常工作。
马丁
你能告诉我为什么下面的代码不起作用吗?这是我的代码:
Popup.js(不是背景脚本):
chrome.tabs.create({url: url}, function(tab) {
chrome.tabs.executeScript(tab.id, {file: 'connect.js', allFrames:true}, function() {
chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});
});
内容脚本:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
console.log(message);
// Handle message.
// In this example, message === 'whatever value; String, object, whatever'
});
还有我的清单:
{
"name": "AN App",
"version": "1.0",
"description": "To connect",
"permissions": [
"storage",
"activeTab",
"tabs",
"https://*/*"],
"browser_action": {
"default_popup": "popup.html"
},
"content_scripts": [{
"matches": ["https://*/*"],
"js": ["connect.js"]
}],
/*
"background": {
"scripts": ["background.js"]
},*/
"manifest_version": 2
}
我不明白,选项卡中的控制台调试不显示任何内容...
我也尝试从弹出窗口到背景,然后从背景到选项卡,但都没有发生(我在 chrome 扩展方面很新,所以我希望你能帮助我)
谢谢,
此致
马丁
我找到了解决方案。当我从弹出窗口中的 JS 调用 chrome.tabs.create 时,它会关闭弹出窗口中的代码 运行 并且永远不会发送消息。
因此,我没有在链接到弹出窗口的 JS 中调用 chrome.tabs.create,而是向后台脚本发送消息,后台脚本调用 chrome.tabs.create(这样它在后台运行并且代码不会停止执行)。
然后消息功能像 chrome 文档说的那样正常工作。
马丁