Ein "too much recursion" - Fehler in Firefox nur manchmal?

Ich habe eine ziemlich einfache Sache, mache ich mit javascript und im Grunde nur manchmal wird javascript gebt mir ein "too much recursion" - Fehler.

Den code in Frage:

if(pageLoad===undefined){
  var pageLoad=function(){}; 
}
var pageLoad_uniqueid_11=pageLoad;
var pageLoad=function(){ 
  pageLoad_uniqueid_11();
  pageLoad_uniqueid_12(); 
};
var pageLoad_uniqueid_12=function(){
 alert('pageLoad');
};

$(document).ready(function(){
   pageLoad();
});

(ja ich weiß, es gibt bessere Wege, dies zu tun. Das ist schwer zu ändern, obwohl, vor allem, weil der ASP.Net partielle postbacks, die nicht gezeigt).

Sowieso, wenn die zu viel Rekursion Fehler passiert, ist es weiterhin geschehen, bis ich Firefox neu starten. wenn ich Firefox neu starten, es funktioniert alles wieder normal. Wie kann ich dieses Problem beheben?

Ich habe aber auch einen jsbin-Beispiel

Update

Ok, ich habe herausgefunden, wie man zuverlässig reproduzieren es in unserem code, aber es funktioniert nicht für das jsbin-Beispiel. Wenn ich einen neuen tab und gehen Sie zu der gleichen Seite(zwei Tabletten die gleiche Adresse) und aktualisieren Sie dann die erste Registerkarte zwei mal, dann bekomme ich diese Fehler konsequent. Wir sind nicht mit jeder Art von session oder irgendetwas anderes, das ich mir denken kann, könnte so ein problem nur auftreten, in einem tab!

Update 2
Nicht so zuverlässig wie ich dachte, aber auf jeden Fall tritt nur auf, wenn mehr als ein Reiter von der gleichen Seite geöffnet ist. Es werden auftreten, alle paar lädt eine der Registerkarten öffnen

Habe ich auch meine aktualisierten code zu zeigen, eine Warnung, wenn pageLoad(if-Anweisung) ist zunächst nicht definiert und wenn es wird zunächst definiert. Irgendwie, beide Warnungen werden angezeigt. Dieser code wird nicht dupliziert, in die gerenderte Seite und es gibt keinen Weg, es wird zweimal genannt. Es ist in einem top-level-script-element nicht umgeben von einer Funktion oder nichts! Mein code endet auf der Suche wie

if(pageLoad===undefined){ 
  var pageLoad=function(){}; 
  alert('new'); 
} else {  
  alert('old'); 
}
Sie verknüpfen auf eine jsbin-Seite, während zuzugeben, wird es wahrscheinlich zu einem Absturz Ihres Firefox? 😉
Versucht das jsbin Seite und reloaded paar mal und nicht Abstürzen. Im mit Firefox 5.0
Nun, es sieht aus wie die Javascript-intepreter in der Regel hat ein limit von 3000 inline-Aufrufe. Und wenn das verschiedene Browser verwenden verschiedene intepreters dann dies ist, warum Sie sehen den Fehler auf Firefox alleine. Sind Sie in der Lage zu reproduzieren, die Fehler mit dem jsbin-Beispiel?
Haben Sie Funktionen aufrufen oder sich Aliase von selbst. Ich bin mir nicht sicher, ich verstehe, warum Sie verwirrt sind, dass Sie immer Rekursion Fehler.
es führen nicht mehr zum Absturz von firefox, werde es nur geben, ein "too much recursion" Fehler in der javascript-Fehler melden

InformationsquelleAutor Earlz | 2011-07-29

Schreibe einen Kommentar