响应工具栏扩展按钮单击打开 xul 文件

Posted

技术标签:

【中文标题】响应工具栏扩展按钮单击打开 xul 文件【英文标题】:Opening a xul file in response to a toolbar extension button click 【发布时间】:2009-06-24 09:41:25 【问题描述】:

我目前正在构建我的第一个 Firefox 扩展,但在使用其中一个功能时遇到了一点困难。我想打开一个新的浏览器选项卡以响应工具栏上的按钮单击。新标签应该包含网页的内容,以及一些额外的按钮。

目前我已经为新标签的内容创建了一个单独的 xul 文件:

<?xml version="1.0"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="myapp-report-window" 
        title="Example 4.5.1" 
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <script type="application/x-javascript" 
            src="chrome://myapp/content/main.js" />

    <toolbox>
        <toolbar id="nav-toolbar">
           <toolbarbutton label="This-is-going-to-do-some-stuff"/>
        </toolbar>
    </toolbox>

    <iframe id="myapp-report-frame" flex="1"/>

    <script type="text/javascript">
        function loadPage(url)
           document.getElementById('myapp-report-frame').setAttribute('src',url);
        
    </script>
</window>

这个 xul 文件是通过这个 javascript 启动的,从主 myapptoolbar.xul 中引用:

gBrowser.selectedTab = gBrowser.addTab('chrome://myapp/content/report.xul');
var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab);
newTabBrowser.addEventListener("load", 
    function()
        loadPage('http://www.somedynamicallysetwebsite.com');
    , true);

我遇到的问题是未找到 loadPage 函数,因此 iframe 的 src 属性从未设置。我确定这是一些愚蠢的范围界定问题,但我对 Firefox 扩展非常陌生(第 2 天!)所以任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我自己对此并不陌生。实际上偶然回到了这里,因为我试图问另一个关于 Firefox 扩展的问题,但我想我可能能够提供帮助。

嗯,您的 loadpage 函数是在 newtab.xul 中声明的,因此无法从 myapptoolbar.xul 调用该函数。我认为 XUL 文件是具有增强权限的 HTML 文件,因此具有相似的属性。您可以在 app.js 中声明该函数,然后让它们都包含 app.js 文件,如下所示:-

<script type="application/x-javascript" src="chrome://app/content/app.js" />

将它放在顶部的某个地方,就在 there.is.only.xul 行之后会很好。只需执行您通常对 HTML 页面执行的操作即可。

我希望这会有所帮助。 =) 祝你的扩展好运!

【讨论】:

糟糕,我应该更仔细地阅读。您已经知道如何在页面中包含 javascript!我想你可以将 loadpage 函数放在 main.js 中,然后让你的 newtab.xul 和 maintoolbar.xul 都包含它。对于那个很抱歉。祝你好运! =)【参考方案2】:

我最终解决了这个问题 - 这是一个范围问题。我必须通过 GBrowser 属性访问 iframe。

【讨论】:

以上是关于响应工具栏扩展按钮单击打开 xul 文件的主要内容,如果未能解决你的问题,请参考以下文章

xul 创建一个按钮

Google Chrome 扩展程序 - 单击工具栏图标时打开新选项卡

如何将徽标、按钮图像和按钮菜单添加到 Firefox 工具栏

文本总解析错误怎么办

在ACCESS 中,单击数据库窗口工具栏中的()按钮,即可在视图中打开相应的表。

单击工具栏图标时,在新选项卡中打开chrome扩展名