我目前正在构建我的第一个 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 天!),因此非常感谢任何帮助。