XUL:如何包含和扩展另一个 .xul 文件?

发布于 2024-11-14 13:01:07 字数 197 浏览 1 评论 0原文

我喜欢通过扩展 basic Firefox 窗口来创建一个窗口,该窗口在 chrome://browser/content/browser.xul 中定义为顶级元素(不是覆盖)。

我的问题是关于在其他扩展应用任何修改之前从基本窗口定义进行分支/分叉,而不是关于如何对用户视为主 FF 窗口的内容应用覆盖或修改。

你知道该怎么做吗?

I like to create a window by extending the basic Firefox window which is defined in chrome://browser/content/browser.xul as the top level element (is not overlay).

My question is about branching/forking from basic window definition before any modification applied to it by other extension and is not about how to apply overlay or modification to what user see as main FF window.

Do you have any idea how to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

合约呢 2024-11-21 13:01:07

您的问题仍然是关于叠加层。您的叠加层应如下所示:

<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <window id="main-window">
        <commandset id="my-commands">
            ...
        </commandset>
    </window>
</overlay>

此示例将在浏览器窗口的根部添加一个 元素(恰好是 ; ID 为 main-window 的元素)。

编辑:问题似乎不是在顶层添加元素,而是关于对现有的进行分叉XUL 文件。您可以通过向 chrome.manifest 添加 override 指令来创建别名:

override chrome://myextension/content/browser.xul chrome://browser/content/browser.xul

现在您可以将覆盖层应用于别名 ony:

overlay chrome://myextension/content/browser.xul chrome://myextension/content/browserOverlay.xul

覆盖层适用于 URL,这使得这成为可能。现在,您可以在新窗口中打开 chrome://myextension/content/browser.xul,它应该是浏览器窗口,但应用了叠加层。请注意,这种方法有局限性,例如覆盖浏览器窗口的扩展程序不会对您的窗口产生任何影响(它们的覆盖仅适用于原始浏览器窗口 URL)。

Your question is still about overlays. Your overlay should go like this:

<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <window id="main-window">
        <commandset id="my-commands">
            ...
        </commandset>
    </window>
</overlay>

This example will add a <commandset> element to the root of the browser window (which happens to be a <window> element with ID main-window).

Edit: It appears that the question wasn't about adding elements on the top level but rather about making a fork of an existing XUL document. You can create an alias by adding an override directive to your chrome.manifest:

override chrome://myextension/content/browser.xul chrome://browser/content/browser.xul

Now you can apply an overlay to the alias ony:

overlay chrome://myextension/content/browser.xul chrome://myextension/content/browserOverlay.xul

Overlays apply to URLs which makes this possible. Now you can open chrome://myextension/content/browser.xul in a new window and it should be the browser window but with your overlay applied. Please note that this approach has limitations, e.g. extensions overlaying the browser window will have no effect on your window (their overlays only apply to the original browser window URL).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文