Google chrome extension 找到结果后,如何激活选项卡和窗口?

Google chrome extension 找到结果后,如何激活选项卡和窗口?,google-chrome-extension,tabs,Google Chrome Extension,Tabs,一旦找到匹配项,我希望将扩展正在运行的选项卡放在我的窗口前面,即使我当前正在第二个窗口中工作 到目前为止,我的content\u script.js中有这段代码,但它似乎不起作用。 注释行是我最后一次失败的尝试 警报给了我-1,这似乎是一个很奇怪的标签id if(output == 'found') { sendResponse({findresult: "yes"}); chrome.extension.onRequest.addListener(function(reque

一旦找到匹配项,我希望将扩展正在运行的选项卡放在我的窗口前面,即使我当前正在第二个窗口中工作

到目前为止,我的content\u script.js中有这段代码,但它似乎不起作用。 注释行是我最后一次失败的尝试

警报给了我-1,这似乎是一个很奇怪的标签id

if(output == 'found') {
    sendResponse({findresult: "yes"});

    chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        //chrome.tabs.update(sender.tab.id, {selected: true});
        //chrome.tabs.update(sender.tab.id, {active: true});
        alert(sender.tab.id);
    });
}
我也在background.html中尝试了一些东西,所有的东西都已经贴在这里了,都没有运气

我需要做些什么才能让它工作

编辑

manifest.json脚本包含

"background": {
    "scripts": ["background.js"]
},
"content_scripts": [ {
    "all_frames": false,
    "js": [ "jquery.js", "content_script.js" ],
    "matches": [ "http://*/*", "https://*/*" ],
    "run_at": "document_idle"
}
background.js(警报甚至不会显示)

content\u script.jsjQuery更改背景(sendResponse工作,但如果激活背景更改行,脚本将停止工作)

编辑2

您不能从内容脚本使用API()

工具书类
要获取选项卡id,请将代码放入
background.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        your_tab_Id = sender.tab.id);
});
并将其添加到
background.js
页面

chrome.tabs.update(your_tab_Id,{"active":true,"highlighted":true},function (tab){
  console.log("Completed updating tab .." + JSON.stringify(tab));
});
仅使用内容脚本发送消息

chrome.extension.sendMessage("Awesome message");

编辑1:

由于语法错误,您的代码无法工作

需要考虑的一些要点:

  • 使用代替onRequest(onRequest被弃用,取而代之的是onMessage)
  • 所有使用的API都是同步的,因此请确保它们是同步调用的
  • 也可在内容脚本中使用(sendRequest已被弃用,取而代之的是sendMessage)
应用上述更改后,代码将按此处所示进行转换

alert("here");

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    your_tab_Id = sender.tab.id;
    chrome.tabs.update(your_tab_Id,{"active":true,"highlighted":true},function (tab){
        console.log("Completed updating tab .." + JSON.stringify(tab));
    });
});

如果您需要更多信息,请告诉我。

当您的逻辑符合特定选项卡的要求时,是否要突出显示选项卡?@Sudarshan如果突出显示意味着将其放在前面,他们会同意。我想在找到匹配项时,将我正在使用扩展名的选项卡及其窗口带到前面。对不起,我似乎根本无法让它工作。我已将
background.js
添加到清单
{“background”:{“page”:[“background.html”],“scripts”:[“background.js”],“browser_action”:{…
并将您的代码添加到新的javascript文件中,但什么也没有发生。如果您不介意的话,我还有另一个问题。我已将jQuery添加到清单中,以便在
content\u script.js
“content\u scripts”中使用:[{“all\u frames”:false,“js”:[“jQuery.js”,“content\u script.js”],
但是如果我尝试使用它,例如,
$('td:contains('+foundItem+')).css(“background”,“greenyellow”);
脚本停止,我很确定这是因为它无法处理选择器。再说一遍,我做错了什么?:(它对我有用,通过编辑你的问题,你不需要
“页面”:[“background.html”]
在您的清单中。对于
$('td:contains('+foundItem+))).css(“background”,“greenyellow”);
您的foundItem包含什么,请通过编辑您的问题来输入此脚本所需的html代码,将从中获取它。非常感谢您花时间帮助我:)我已取出
“页面”:[“background.html”]
来自我的清单。变量
foundItem
包含一个与文档文本匹配的数组中的单词。匹配工作正常,变量填充正确,所以这不会是问题。我已使用相关代码片段更新了问题。哇,非常感谢您的快速回答!但遗憾的是,它仍然没有不起作用,甚至警报也不起作用。我已经用一个链接编辑了这个问题,下载了整个扩展(包括一个!自述)我正在研究,如果你能看一下的话?我会删除链接,并在发现问题后用相关代码更新问题。因为现在我真的一点都不知道我遗漏了什么。
chrome.extension.sendMessage("Awesome message");
alert("here");

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    your_tab_Id = sender.tab.id;
    chrome.tabs.update(your_tab_Id,{"active":true,"highlighted":true},function (tab){
        console.log("Completed updating tab .." + JSON.stringify(tab));
    });
});