最近我和我的一个 friend 一直在开发 Firefox 扩展。他今天把代码交给了我,我一直在努力使其无需重新启动。我使用了How to convert an overlay extension to restartless (on MDN)中的教程。由于我一般没有太多使用 JavaScript 和扩展的经验,我想知道是否有人可以帮助理解 step number 6指的是本教程中的此处。他们说我们不能使用“不再使用 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(), 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元素是一次性添加的;有些必须添加到每个打开的窗口中以及打开每个新窗口时。当扩展被禁用或删除时,必须以编程方式从 Firefox 中完全删除 UI 元素。
您引用的部分试图描述将实际的 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
应用到您要将其添加到的任何位置。请记住,当您的扩展程序被禁用/删除/更新时,您还需要能够将其删除。
为了提供更详细的信息,我们需要知道您要将脚本添加到什么位置。为此,我们可能需要您添加 chrome.manifest
文件的副本。了解脚本的作用可能会有所帮助,因为无需以覆盖暗示的方式应用脚本,就可以更适本地处理功能。但是,您应该将其作为一个新的、单独的问题提出,而不是修改此问题以提出不同的问题。
关于javascript - MDN 文档 : "How to convert an overlay extension to restartless" 中关于弄清楚 XUL 元素的段落意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092701/