在内容脚本中获取当前标签页ID的方法-Chrome扩展程序

时间:2018-06-26 12:51:02

标签: javascript google-chrome-extension

我想在内容脚本中获取当前的标签ID。但是它总是失败。我不确定我在做什么错事。

以下是其他主题的一些解决方案,但在我的扩展程序中不起作用:

代码1-content.js

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    alert("sent from tab.id=", sender.tab.id);
});

代码2-content.js

chrome.extension.sendRequest({
    action: "WhatYouWant"
});

chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
    if (request.action) {
        alert('The response is : ' + request.action);
    }
});

background.js

chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
    if (request.action) {
        // Make what you want
        chrome.tabs.getSelected(null, function (tabs) {
            chrome.tabs.sendRequest(tabs.id, {
                action: "response"
            });
        });
    }
});

manifest.json

...
"background": {
    "scripts": ["background.js"],
    "persistent": true
},

"content_scripts": [{
    "all_frames": true,
    "js": ["content.js"],
    "matches": ["<all_urls>"],
    "run_at": "document_end"
}],
"web_accessible_resources": [
    "content.js"
],
...

注意:这不是重复的主题,其他问题中的解决方案对我不起作用。

1 个答案:

答案 0 :(得分:0)

chrome.tabs.query()函数返回制表符数组。

请参阅此文档: https://developer.chrome.com/extensions/tabs#method-query

当我尝试使用tabs.query()函数时,回调函数将返回所有当前的tabS数组。

chrome.tabs.query( {}, function(cbResult){
  console.log(cbResult);});

使用Google的文档以及上面的回调返回,您可以使用第一个query()参数找到正确的标签。

如果第一个参数为Null,则查询函数返回所有tabs数组。 您可以使用第一个参数来缩小候选选项卡。

Screenshot