2010-11-16 18 views
1

J'essaie d'ajouter un script au début de mon fichier XBL, mais même le test suivant ne fonctionne pas, aucune idée pourquoi?Pourquoi ce script ne fonctionne pas?

<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> 

--update

Cette boucle infinie est becouse je veux un morceau de code pour continuer à fonctionner. C'est une communication avec un système embarqué.

Répondre

1

Vous ne connaissez pas XBL, mais votre code a une boucle infinie sans condition d'arrêt. Une telle chose plante JavaScript.

Ajouter la condition d'arrêt ou "fail safe" comme rompre après 100 000 itérations et il ne gèlera pas le navigateur.

0

Je n'ai pas non plus de connaissances sur XBL, mais je pense aussi que de la façon dont vous l'avez écrit, cela bloquera l'exécution. À l'heure actuelle, tout fonctionne avec une signification synchronisée, l'interprète s'arrêtera à while et attendra que cela se termine. Maintenant, comme c'est une boucle infinie, cela n'arrivera jamais. Ce que vous pouvez faire est la suivante:

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

De cette façon, vous commencez votre while dans une sorte de manière asynchrone. Cela devrait être non-bloquant. Dites-moi, si cela fonctionne.

+0

On dirait que c'était un problème XBL, pas javascript un. En fait, il n'est jamais entré et n'a jamais imprimé (avec la méthode dump()) la chaîne. –