gpt4 book ai didi

google-chrome - pageAction 的当前 TabID

转载 作者:行者123 更新时间:2023-12-03 19:31:57 27 4
gpt4 key购买 nike

我是 chrome 扩展编程的新手,这是/将是我的第一个扩展。

我想要的 :现在我想为页面做一个pageAction,如果显示了某个html-tag。要执行 pageAction 似乎我必须知道当前选项卡的 TabID,所以我尝试了这个,它不起作用(参见代码中的注释):

manifest.json (效果很好,只是为了向您展示我的 list 的样子)

{
"manifest_version":2,

"name":"ExtensionName",
"description":"Description",
"version":"1.0",

"page_action":{
"default_icon":"icon.png",
},
"content_scripts":[
{
"matches":[
"http://www.domain.com/page.aspx"
],
"js":["searchTag.js"],
"run_at":"document_idle",
"all_frames":false
}
]
}

searchTag.js(代码或多或少类似于 how to get current tabId from background page 中的 Arithmomaniac 的回答)
if (document.getElementById("idIWant")) {
var currentTab;
alert(currentTab); //this works and gives an alert with "undefined"
//now the alert in the function callback doesn't work
chrome.tabs.query(
{currentWindow: true, active: true},
function(tabArray) {
alert(tabArray[0].id);
currentTab = tabArray[0].id;
}
)
}

那么我的代码有什么问题?似乎我没有正确使用 chrome.tabs.query() 但我没有看到它。

最佳答案

searchTag.js 是 内容脚本 ( https://developer.chrome.com/extensions/content_scripts.html ),它无权访问 chrome.tabs API。您必须从内容脚本向后台页面( https://developer.chrome.com/extensions/messaging.html )发送消息,并在后台页面中调用 chrome.tabs.query。例如:

searchTag.js

if (document.getElementById("idIWant")) {
chrome.runtime.sendMessage('showPageAction');
}

bg.js
var currentTab;

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request == 'showPageAction') {
chrome.tabs.query(
{currentWindow: true, active: true},
function(tabArray) {
if (tabArray && tabArray[0])
chrome.pageAction.show(tabArray[0].id);
}
);
// sender will also contain the tab id so you can simply use
// if (sender)
// chrome.pageAction.show(sender.tab.id);
}
});

并将其添加到 manifest.json
"background": {
"scripts": ["bg.js"],
"persistent": true
},

关于google-chrome - pageAction 的当前 TabID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com