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

时间:2009-06-24 09:41:25

标签: firefox firefox-addon xul

我目前正在构建我的第一个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天!)所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

我自己也是新手。实际上在这里偶然发现是因为我试图提出另一个关于firefox扩展的问题,但我想我可以提供帮助。

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

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

把它放在顶部的某个地方,就在那之后。there.only.xul就行了。只需执行您通常对HTML页面执行的操作。

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

答案 1 :(得分:0)

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