2011-01-30 10 views
0

私は、FirefoxのアドオンであるTryAgainの開発者の一人で、Webサイトの読み込みに失敗したときにカスタムエラーページを表示します。基本的にFirefoxのnetError.xhtmlをカスタマイズされたバージョンに置き換えます。次のようにnetError.xhtml以内に延長コードからJavaScriptを実行するためにXULボタンを作成すると「コンポーネントのエラーコード」が返される

は、私はエラーページにXUL <command>要素を追加しました:

var increment_btn = doc. 
    createElementNS(
     "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", 
     "xul:command" 
    ); 
increment_btn.setAttribute("id", "errorIncrement"); 
increment_btn.setAttribute("oncommand", "autoRetryThis();"); 
div.appendChild(increment_btn); 

を実行する必要があるautoRetryThis()たびに、私は単にdoCommand()を実行します要素上に私のテストマシンでは、これはFirefox 2.0から4.0b10までうまく動作します。しかし私は、the following problem reportを受け取った:上記のコードの最初の行に

Error: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMHTMLDocument.createElementNS]

エラーポイント。

createElementNS()を使用して要素を作成する理由を知りたい場合は、refer to my previous questionを入力してください。

答えて

0

XUL名前空間の使用は推奨されていません。私の理解では、これは、もはや単一のXML文書内にXULとXHTMLのコントロールを配置することができないことを意味します。

私の解決策ではなく、通常のXHTML <button>タグを使用し、それがイベントをディスパッチすることによりonclick()リスナーの呼び出しになった:

try { 
    var evt = doc.createEvent('HTMLEvents'); 
    evt.initEvent('click', false, false); 
    btn.dispatchEvent(evt); 
} catch (e) { 
    btn.click(); 
} 

は、理由だけではなく、最初の場所でbtn.click()をしませんか?私は、このメソッドと、ドキュメントのクリックを監視するアドオンとの間にいくつかの非互換性があることを発見しました。イベントを派遣することは、これを直接回避する。

1

createElementNSの名前パラメータからxul:を削除します。

+0

私はこれを試して改訂版を提出しますが、タイムリーな編集プロセスを経なければなりません。なぜこれが問題を引き起こしているのかを詳しく解説できますか? –

+1

しかし私はそれが問題を解決することを期待しません。リモートXULはFirefox 4.0で無効になっていました。私はここでヒットしているものと思われます: https://bugzilla.mozilla.org/show_bug.cgi?id=546857 – sdwilsh

+0

あなたは正しいと思います。バグレポートは、[this message](https://bugzilla.mozilla.org/show_bug.cgi?id=623482#c0)が具体的に述べている別のものを参照しています。「現在、誰かがXUL要素を作成しようとすると、 とエラーをスローします。奇妙なことは、1つのマシンで動作し、別のマシンでは動作しないことです。何がありますか? –

関連する問題