我正在编写一个Chrome扩展,其中一部分是,当点击弹出页面上的按钮时,我需要获得当前标签的标题和URL。
我以前使用过Chrome的消息传递系统,经过一番努力,我成功地让它在很多场合工作。然而,我从来没有在弹出页面上使用过它,而且从我所读到的内容来看,要做到这一点要困难得多。
目前为止,我设法弄清楚的时间表是这样的:
popup.html
/popup.js
: 点击按钮popup.html
/popup.js
: 请求/消息发送到内容脚本contentScript.js
: 从弹出页面接收请求/消息contentScript.js
: 当前选项卡的标题和URL存储在变量中contentScript.js
: 这2个变量作为字符串化响应发送popup.html
/popup.js
: 从响应中解析2个变量
通常情况下,我能够弄清楚这一点,但我读了一些事情,扔扳手在工程,如:
chrome.tabs.getSelected
只能在后台页面/脚本中使用,这是否意味着内容脚本根本不需要使用?- 消息不能直接从内容脚本发送到弹出页面,它们必须通过背景页面
- 必须先确认弹出窗口存在,然后才能将消息传递给它(尽管,我想我知道如何做到这一点)
我已经发现Chrome的消息传递系统已经够难的了,但是这完全把我搞糊涂了。因此,我写了这篇文章。
2条答案
按热度按时间zi8p0yeb1#
不推荐使用
chrome.tabs.getSelected
。应改用chrome.tabs.query
。chrome.tabs.query
需要两个参数:一个查询对象和一个将结果选项卡数组作为参数的回调函数。您可以通过查询当前窗口中当前活动的所有选项卡来获取“当前选项卡”。
由于查询将返回仅包含当前选项卡的选项卡数组,因此请确保获取回调中的第一个元素
这就是:
agxfikkp2#
另一种方法是从弹出窗口向内容脚本发送消息,然后内容脚本返回URL
window.location.href