MDN 文档中关于确定 XUL 元素的段落是什么意思:"How to convert an overlay extension to restartless"

What does paragraph about figuring out XUL elements mean in MDN document: "How to convert an overlay extension to restartless"

最近我和我的一个朋友一直在开发 Firefox 扩展。他今天把代码交给了我,我一直在努力让它不重启。我在本教程中使用了 How to convert an overlay extension to restartless (on MDN). Since I don't have much experience working with JavaScript and extensions in general, I was wondering if anyone could help to understand what step number 6 中的教程。他们说我们不能使用 "no more XUL overlays",我理解这一点。我不明白的是如何处理这部分:

Figure out what XUL elements you need to create for your add-on to add your interface, where it needs to go into a XUL window, and how to do it. Docs: document.getElementByID(), document.createElement(), Element reference, Node reference (DOM elements are also nodes).

我决定不使用 document.loadOverlay,因为它有很多错误。我不确定这是否有帮助,但这是我们 overlay.xul 的代码。再次抱歉,如果问题真的很基本,我们将不胜感激。如果我需要提供更多代码,请告诉我。在这一点上,我认为只有 overlay.xul 文件的代码很重要。

<?xml version="1.0" encoding="UTF-8"?>
<overlay id="my-overlay" 
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script type="application/javascript;version=1.7" src="overlay.js"/>
</overlay>

XUL 覆盖可用于 Firefox 中的各种用途。 Step 6: No more XUL overlays 更多地关注 UI 元素而不是覆盖的其他可能用途(例如加载脚本,正如您所做的那样)。

在 XUL 覆盖扩展中,通常通过为修改的界面的每个部分提供 XUL 覆盖文件来添加 UI 元素。 XUL 覆盖扩展不需要考虑删除界面元素,因为它们仅在扩展被删除或禁用时被删除。

在无需重新启动的扩展中,所有 UI 元素都是在每次启动扩展时以编程方式添加的。有些UI个元素被添加了一次;有些必须同时添加到每个打开的 window 和每个新的 window 打开时。当扩展被禁用或删除时,UI 元素必须以编程方式从 Firefox 中完全删除。

您引用的部分试图描述将实际 XUL 覆盖(用于修改 Firefox UI)转换为以编程方式插入(和删除)UI 元素的过程。最常见的 UI 元素可能是工具栏按钮,但它可以是任何东西。因为可以是任何东西,描述的比较模糊

整个部分 Step 6: No more XUL overlays 绝对可以使用一些扩展。我记得根据我在将扩展从 XUL 转换为覆盖时使用的代码计划这样做。我本来想稍微清理一下代码,并考虑更多的情况。但是,在那里有一个例子会有所帮助。我会看看我是否可以在下周左右更新它(如果其他人没有击败我)。

你的情况:
根据您在问题中包含的覆盖代码,本节并未像您希望的那样直接讨论您如何使用 XUL 覆盖。您引用的部分:

Figure out what XUL elements you need to create for your add-on to add your interface, where it needs to go into a XUL window, and how to do it. Docs: [document.getElementByID()][3], [document.createElement()][4], [Element reference][5], [Node reference][6] (DOM elements are also nodes).

专门讨论向 Firefox 添加 UI 元素,这不是您对叠加层所做的。

您需要做的是确定如何将您的脚本 overlay.js 应用到您要添加它的任何地方。请记住,当您的扩展名是 disabled/removed/updated.

时,您还需要能够将其删除

为了提供更详细的信息,我们需要知道您要将脚本添加到什么。为此,我们可能需要您附上 chrome.manifest 文件的副本。了解您的脚本的作用可能会有所帮助,因为在不以覆盖所隐含的方式应用脚本的情况下,可以更恰当地处理功能。但是,您应该将此作为一个新的、单独的问题提出,而不是修改此问题以提出不同的问题。