chrome.tabs.create 不工作
chrome.tabs.create not working
因为我的内容脚本无法使用所有 chrome API 工具,所以我从我的内容脚本向后台脚本发送消息。收到后,后台脚本应该会打开一个新选项卡,其中包含我制作的 html 文件。
这是从内容脚本发送消息...
chrome.runtime.sendMessage({permission: true}, function(response) {
console.log(response.access);
});
这是在我的后台脚本中接收消息的代码...
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.permission == true) {
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
sendResponse({access: "yes"});
});
}
});
消息已收到,我已经测试过了。但是当我添加以下代码时...
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
...etc
我收到一条错误消息,提示未收到回复。这意味着我的 chrome.tabs.create
里面一定有什么东西坏了。为什么会坏?
permission.html
路径是相对于后台脚本的。
我想要的是在收到消息时创建一个新标签。
我不确定这是否有任何影响,但内容脚本和后台脚本是异步通信的,因此要使用 sendResponse
回调,您需要 return true;
onMessage 匿名函数结束。
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.permission == true) {
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
sendResponse({access: "yes"});
});
}
return true; //to tell the content script to look out for sendResponse
});
同样,我不确定这是否会解决您的问题,但无论如何,如果不在侦听器结束时返回 true,您使用 sendResponse 的响应将无法工作
此外,顺便说一句,chome.extension.getURL()
不需要点斜线,所以 chrome.extension.getURL('src/permission.html')
就足够了。
你试过了吗运行
chrome.tabs.create({'url': chrome.extension.getURL('src/permission.html')});
(带或不带点斜线)查看选项卡是否打开?
因为我的内容脚本无法使用所有 chrome API 工具,所以我从我的内容脚本向后台脚本发送消息。收到后,后台脚本应该会打开一个新选项卡,其中包含我制作的 html 文件。
这是从内容脚本发送消息...
chrome.runtime.sendMessage({permission: true}, function(response) {
console.log(response.access);
});
这是在我的后台脚本中接收消息的代码...
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.permission == true) {
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
sendResponse({access: "yes"});
});
}
});
消息已收到,我已经测试过了。但是当我添加以下代码时...
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
...etc
我收到一条错误消息,提示未收到回复。这意味着我的 chrome.tabs.create
里面一定有什么东西坏了。为什么会坏?
permission.html
路径是相对于后台脚本的。
我想要的是在收到消息时创建一个新标签。
我不确定这是否有任何影响,但内容脚本和后台脚本是异步通信的,因此要使用 sendResponse
回调,您需要 return true;
onMessage 匿名函数结束。
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.permission == true) {
chrome.tabs.create({'url': chrome.extension.getURL('./src/permission.html')}, function(tab) {
sendResponse({access: "yes"});
});
}
return true; //to tell the content script to look out for sendResponse
});
同样,我不确定这是否会解决您的问题,但无论如何,如果不在侦听器结束时返回 true,您使用 sendResponse 的响应将无法工作
此外,顺便说一句,chome.extension.getURL()
不需要点斜线,所以 chrome.extension.getURL('src/permission.html')
就足够了。
你试过了吗运行
chrome.tabs.create({'url': chrome.extension.getURL('src/permission.html')});
(带或不带点斜线)查看选项卡是否打开?