[英]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.