Google chrome extension 找到结果后,如何激活选项卡和窗口?
一旦找到匹配项,我希望将扩展正在运行的选项卡放在我的窗口前面,即使我当前正在第二个窗口中工作 到目前为止,我的content\u script.js中有这段代码,但它似乎不起作用。 注释行是我最后一次失败的尝试 警报给了我-1,这似乎是一个很奇怪的标签idGoogle 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
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()
工具书类
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));
});
});