1

XBLファイルの先頭にスクリプトを追加しようとしていますが、次のテストが実行されていません。理由は何ですか。

<bindings xmlns="http://www.mozilla.org/xbl"
       xmlns:xbl="http://www.mozilla.org/xbl"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <script language="javascript" type="text/javascript"><![CDATA[
     while(true) {
      dump("OK");
     }
 ]]></script>

</bindings>

- アップデート

この無限ループは、コードの一部を実行し続けたいためです。組み込みシステムとの通信です。

4

3 に答える 3

1

XBLについては知らないが、コードには停止条件のない無限ループがある。そのようなことはJavaScriptをクラッシュさせています。

停止条件を追加するか、100,000回の反復後に中断するなどの「フェイルセーフ」を追加すると、ブラウザがフリーズしなくなります。

于 2010-11-16T14:12:01.423 に答える
0

私もXBLの知識はありませんが、あなたがこれを書いた方法では、実行がブロックされると思います。現時点では、すべてが同期して実行されます。つまり、インタプリタは最後に停止し、while終了するのを待ちます。さて、それは無限ループなので、これは決して起こりません。あなたができることは次のとおりです。

window.setTimeout(function() {
    while(true) {
        dump("OK");
    }
}, 1);

このようにwhileして、非同期の方法で開始します。これは非ブロッキングである必要があります。それがうまくいくかどうか教えてください。

于 2010-11-16T16:16:45.113 に答える
0

XBLにはスクリプト要素がなく、ドキュメントは誤りです。

https://bugzilla.mozilla.org/show_bug.cgi?id=58757

于 2010-11-16T16:33:53.927 に答える