google-chrome - 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 doc说的那样正常工作。
马丁
推荐阅读
- css - 为什么 ThemeProvider (Material UI) 在这里对我不起作用?
- laravel - 一般错误:1364 字段“学生 ID”没有默认值
- configuration - Sublime Text 3 中的 set_layout 设置
- c# - AutoCAD C#/.Net:公开实体坐标
- git - 分支落后于 'GitHub/master' 1 次提交
- react-native - 登录页面和用户模块的最佳预构建组件以响应本机?
- laravel - 如何在 Laravel 中制作自定义登录页面以及如何应用路由?
- oauth - Cloudfunction/Serverless OAuth2 客户端
- terraform-provider-azure - 需要有关如何将 Azure IaaS 部署到特定可用区的更多详细信息?
- c - 如何使用 POSIX 接口打开文件 (open(),write())