如何获取Chrome标签的ID?

Ano*_*ous 9 google-chrome-extension

chrome.tabs.get显然不能在内容脚本中工作,除了通过它发送它chrome.extension.sendRequest我不知道如何使背景响应正确的选项卡.

如何让内容脚本将信息发送到后台页面,然后后台页面将信息返回到它来自的选项卡?

Sin*_*dar 11

编辑:这个答案已过时,并使用已弃用的功能.请改用其他答案.

好吧,让我解释一下你的家伙;)

首先从内容脚本发送一条消息,如下所示:

内容脚本 - 发送消息

chrome.extension.sendRequest({ action: "WhatYouWant"});
Run Code Online (Sandbox Code Playgroud)

背景页面 - 接收消息和响应

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" });
        });     
    }
});
Run Code Online (Sandbox Code Playgroud)

ContentScript - 添加一个监听器

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

  • 如果有人想使用此解决方案,请注意不推荐使用此方法.请改用chrome.runtime.onMessage (3认同)

Nat*_*ate 5

onMessage提供了一个sendResponse函数,可用于将响应直接发送回发送者。

background.js 摘抄:

chrome.extension.onMessage.addListener(
    function(message, sender, sendResponse) {
        if ( message.type == 'getTabId' )
        {
            sendResponse({ tabId: sender.tab.id });
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

content_scripts.js 摘抄:

var tabId;
chrome.extension.sendMessage({ type: 'getTabId' }, function(res) {
    tabId = res.tabId;
});
Run Code Online (Sandbox Code Playgroud)