如何获取脚本注入的选项卡?

时间:2016-09-02 17:58:05

标签: google-chrome google-chrome-extension

在我的Google Chrome扩展程序页面中,我有一个内容脚本,可在匹配特定网址时注入脚本。

我正在尝试获取有关它注入的选项卡的一些信息,以便在标签关闭时我可以进行一些清理。

为此,我尝试在注入的脚本中调用chrome.tabs.getCurrent()。但是,它会返回undefined,这很奇怪,因为在API中它表示getCurrent()的返回

  

如果从非制表符上下文调用,则可能是未定义的(例如:a   背景页面或弹出视图)。

我正在选项卡中调用它......

我哪里错了?

1 个答案:

答案 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);
        }
    });