在我的Google Chrome扩展程序页面中,我有一个内容脚本,可在匹配特定网址时注入脚本。
我正在尝试获取有关它注入的选项卡的一些信息,以便在标签关闭时我可以进行一些清理。
为此,我尝试在注入的脚本中调用chrome.tabs.getCurrent()
。但是,它会返回undefined
,这很奇怪,因为在API中它表示getCurrent()
的返回
如果从非制表符上下文调用,则可能是未定义的(例如:a 背景页面或弹出视图)。
我正在选项卡中调用它......
我哪里错了?
答案 0 :(得分:2)
在您的实际内容脚本中,请求背景页面为您提供标签ID。
content.js
var tabId; // global but not visible to the webpage as it's in an "isolated world"
chrome.runtime.sendMessage('get-tabId', function(response) {
tabId = response;
// inject a page script and pass the tabId
document.head.appendChild(document.createElement('script')).text = '(' +
function(tabId) {
tabId = tabId |0; // coerce to number
console.log('Injected code got tabId: ', tabId);
} + ')(' + tabId + ')';
});
background.js
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg === 'get-tabId') {
sendResponse(sender.tab.id);
}
});