[英]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
內部一定發生了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')});
(帶或不帶點斜線)以查看標簽頁是否打開?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.