javascript - MDN 文档 : "How to convert an overlay extension to restartless" 中关于弄清楚 XUL 元素的段落意味着什么

标签 javascript firefox firefox-addon overlay xul

最近我和我的一个 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/

相关文章:

javascript - WEB 上的 Apple Pay 集成 - 设置沙盒环境

javascript - 如何通过onclick将<div>更改为&lt;input&gt;

javascript - 模拟 JavaScript 的 setTimeout() 方法 “from first principles”

css - 负边距底部在 Firefox 中不起作用

javascript - Firefox 附加组件 sdk : how to use simple-storage API in a content script?

javascript - Titanium 选项卡式 iPhone 应用程序中的内存泄漏

javascript - 获取迭代列表的所有值

python - Py2exe 和 selenium - IOError : [Errno 2] No such file or directory: '\\dist\\main.exe\\selenium\\webdriver\\firefox\\webdriver_prefs.json'

javascript - 在 Firefox 版本 < 3.6.2 中打开 XPCNativeWrapper 对象

javascript - Firefox Addon-SDK 面板滚动条