我正在编写一个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的消息传递系统很难理解,但这个就完全让我困惑了。因此,写下了这篇文章。
"permissions": ["tabs", ...]
。 - Martin CapodicicurrentWindow
和lastFocusedWindow
参数的区别吗?文档并没有很好地澄清这个问题。我问这个问题是因为我希望避免出现有时将DevTools窗口视为活动选项卡而没有URL的情况。 - kanolastFocusedWindow
。参考:https://dev59.com/GWMl5IYBdhLWcg3wZWSD#29151677 - Gangula