Firefox Addon 如何无法从 Popup JS 访问浏览器页面 DOM?

Firefox Addon How to cannot access browser page DOM from the Popup JS?

您好我正在尝试在 Firefox 中开发简单的弹出式扩展,我是 Firefox 扩展开发框架的新手。

我用this boilerplate来加快这个过程

我通过覆盖 popup.html 文件并添加此行

向带有 id = testid1 的弹出窗口添加了一个小按钮
<a id="testid1" href="#" class="js-options">Test</a>

我通过覆盖 popup.js 文件中的 popup.addEventListener 添加了相应的 EventListener

popup.addEventListener("click", function (e) {
  if (e.target && e.target.matches("#testid1 ")) {

  var element_from_popup_html = document.getElementById("elementid1").value;
  var element_from_web_page = document.getElementById("elementid2").value;
  alert('it work');
}}

我确保此事件列表器正确触发并且正在使用警报工作。 我正在尝试从 DOM Element1(内部弹出页面)和 Element2(来自网络浏览器)

中获取 2 个元素

我无法获取:element_from_web_page!!

我有 document.getElementById("elementid2") 是 NULL。

所以在进一步挖掘之后,这里的 : 文档是 popup.html,我应该如何访问这个浏览器浏览过的页面。我曾经为此使用文档关键字!!

还发现我可以使用 _ext2.default.and_put_the_chosen_api_here 从 mozilla 使用 Javascript API 但我只需要简单的 dom 通过 id 查找?

在阅读了更多有关 Firefox 扩展的信息后,我设法解决了我的问题。所以基本上我所做的是管理弹出文档而不是网页。为了与浏览器当前页面交互,我需要更改另一种类型的 js,称为 content script,它不同于 popup.js javascript 文件(类似到我正在编辑的后台脚本)。

所以基本上我不得不使用后台和content-scriptwith regards to the documentation.

之间的通信

在 content_script.js 上,我使用一些 eval 函数与 web-page 进行了交互。