1

私は現在、最初のFirefox拡張機能を構築していますが、1つの機能に少し問題があります。ツールバーのボタンクリックに応答して、新しいブラウザタブを開きたいのですが。新しいタブには、いくつかの追加のボタンとともに、Webページのコンテンツが含まれている必要があります。

現時点では、新しいタブのコンテンツ用に別の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ファイルは、メインのmyapptoolbar.xulから参照されるこのjavascriptを介して起動されます。

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日目!)に非常に慣れていないので、助けていただければ幸いです。

4

2 に答える 2

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.is.only.xul行の直後の上部のどこかに配置します。HTMLページに対して通常行うようなことをするだけです。

これがお役に立てば幸いです。=)あなたの拡張機能に頑張ってください!

于 2009-06-25T18:52:18.323 に答える