繁体   English   中英

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

[英]Opening a xul file in response to a toolbar extension button click

我目前正在构建我的第一个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天!)非常陌生,因此,我们将不胜感激。

我本人是新手。 其实在这里偶然发现是因为我试图问另一个有关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页面执行的操作一样即可。

我希望这有帮助。 =)祝您转机好运!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM