无法将消息从 Chrome 扩展程序中的弹出窗口.js发送到后台.js
Fail to send message from popup.js in Chrome extension to background.js
我希望从弹出窗口.js向后台发送消息.js。当我单击该按钮时,消息将发送到后台.js,它将为我的指定网站打开一个新选项卡。我检查了弹出窗口.js和背景.js发现它们都还可以,只是无法将消息从弹出窗口.js发送到后台.js。
弹出窗口.js
window.onload=function()
{
document.getElementById("submit").onclick=function()
{
chrome.extension.sendMessage({command:"start"});
}
}
背景.js
chrome.extension.onMessage.addListener(
function(request,sender,sendResponse)
{
switch(request.command)
{
case "command":
openTab();
break;
}
return true;
}
);
var openTab=function()
{
chrome.windows.create
(
{
url:"http://www.baidu.com",
tabId:1
}
);
};
您的代码中有一个小错误:在用于接收background.js
脚本中的消息的函数中,您正在使用变量 request.command
上的 switch
语句,但是,在其中,您正在检查case "command"
,而您应该检查case "start"
,因为您正在发送一条{command: "start"}
的消息。
收到消息,但根据不匹配的字符串进行检查,显然您的openTab()
函数永远不会被调用。
要解决此问题,您可以:
-
更改您从
popup.js
发送的消息,如下所示:chrome.runtime.sendMessage({command: "command"});
-
或者更改
background.js
脚本中的case
语句:chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { switch(request.command) { case "start": openTab(); break; } return true; });
无论如何,我强烈建议您使用chrome.runtime
API而不是chrome.extension
,这已经过时了。
相关文章:
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 在新窗口上使用d3.js
- 如何解决'窗口未定义'终端上的节点JS出错
- 在highcharts.js中向点弹出窗口动态添加文本
- 全局窗口热键在最小化chrome窗口时调用js函数
- 打开“;检查元件”;窗口通过JS
- JS-窗口宽度函数不起作用
- JS窗口.位置不起作用
- 加载的NW JS窗口不会触发URL,但会从本地文件触发
- 将 PHP 表单数据传输到 JS 窗口
- 如何以一定的时间间隔刷新EXT JS窗口
- History.js窗口.Onstatechange不着火
- heatmap.js -窗口大小调整事件
- js窗口.重定向不断更新
- JS:窗口.定位本地存储键的值
- 未定义跟踪器JS窗口
- d3.js窗口.open没有'It’我不管用
- JS窗口宽度html5视频元素响应
- 用javascript关闭colorbox.js窗口
- JS窗口准备就绪和脚本计时