2

xul でドッキング パネルを作成するにはどうすればよいですか。firebugのように動作するはずです。私はこのようなことを試しました:

myWindow = window.open("chrome://project/content/myWindow.xul", "someRandomName", "chrome");

myWindow.xul は次のとおりです。

<?xml version="1.0" encoding="utd-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<?xul-overlay href="chrome://project/content/myPanel.xul"?>

    <window id="dockedPanel" title="my super extension" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
        <hbox flex="1">
            <vbox id="myPanel"/>
        </hbox>
    </window>

myPanel.xul は私のパネルで、myPanel は myPanel.xul の vbox の ID です。

このようにウィンドウを開くと、思ったように見えますが、すべてのボタン/その他のコンポーネントが機能しません。たとえば、myPanel.xul にボタンがある場合:

<button id="myButton" label="button" onclick = "jsScriptFromOtherFile.someFunction()"/>

myWindow でそのボタンをクリックすると、 someFunction は呼び出されません。理由も、それを機能させる方法もわかりません。

4

1 に答える 1

0

あなたの問題は、あなたがそれを何と呼んでも、すべてのウィンドウが JavaScript コード/状態/スコープを共有することを期待していることだと思います。「jsScriptFromOtherFile」は、「myWindow.xul」または「myPanel.xul」にロードされたどのスクリプトにも定義されていません。これは、を呼び出す親ウィンドウで定義されていますwindow.open

各「ウィンドウ」(またはタブ、iframe など) は、独自のグローバル オブジェクトを取得します。別の「ウィンドウ」から変数にアクセスするには、まずそのウィンドウのハンドルを取得する必要があります。クロム コードでウィンドウを操作する を参照してください。

于 2011-07-17T00:01:25.600 に答える