我想在找到匹配项后立即将扩展程序运行的标签放到我的窗口前面,即使我当前正在第二个窗口中工作。
到目前为止,我的 content_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 (警报甚至不会显示)
alert("here");
chrome.extension.onRequest.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));
});
content_script.js jQuery更改背景(sendResponse有效,但如果我激活后台更改行,则脚本停止工作)
if(found === true) {
//$('td:contains('+foundItem+')').css("background", "greenyellow");
sendResponse({findresult: "yes"});
}
答案 0 :(得分:2)
您无法使用内容脚本中的chrome.tabs 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:
由于语法错误,您的代码无效
有一点需要考虑:
sendMessage
(不推荐使用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));
});
});
如果您需要更多信息,请与我们联系。