我正在撰写Chrome扩展程序,在其中的一部分中,当点击弹出页面上的按钮时,我需要获取当前标签的标题和网址。
之前我曾经使用过Chrome的消息传递系统,并且经过多方努力,在许多场合设法让它运行起来。但是,我从来没有必要在弹出页面中使用它们,而且从我读过的内容来看,这样做要困难得多。
到目前为止我设法弄清楚的时间表是:
popup.html
/ popup.js
:点击了按钮popup.html
/ popup.js
:请求/消息被发送到内容脚本contentScript.js
:从弹出页面contentScript.js
:当前标签的标题和网址存储在变量contentScript.js
:2个变量作为字符串化响应发送popup.html
/ popup.js
:从响应中解析出2个变量通常我能够弄清楚这一点,但是,我已经阅读了一些在工作中抛出扳手的事情,例如:
chrome.tabs.getSelected
只能在后台页面/脚本中使用。这是否意味着根本不需要使用内容脚本?我已经发现Chrome的消息传递系统很难,但这让我很困惑。因此,这篇文章。
答案 0 :(得分:65)
chrome.tabs.getSelected
已弃用。您应该使用chrome.tabs.query
代替。
chrome.tabs.query
需要两个参数:一个查询对象和一个回调函数,它将结果选项卡数组作为参数。
您可以通过查询当前处于活动状态且位于当前窗口中的所有选项卡来获取“当前选项卡”。
var query = { active: true, currentWindow: true };
由于查询将返回仅包含当前选项卡的Tab数组,因此请务必获取回调中的第一个元素
function callback(tabs) {
var currentTab = tabs[0]; // there will be only one in this array
console.log(currentTab); // also has properties like currentTab.id
}
Etvoilà:
chrome.tabs.query(query, callback);
答案 1 :(得分:-4)
没关系。
事实证明,您可以直接从弹出窗口中使用chrome.tabs.getSelected
。有人骗了。 ¬¬