Ist das Browser-abhängige JavaScript-Code?

8

Warum unterschiedliche Ausgabe in IE und FF?
Im IE zeigt es: Hallo und In FF zeigt es: Hallo

%Vor%

Was ist Standard? Welcher Browser macht es richtig?

Hinweis: Wenn ich 10 zu 11 in FF umwandle, wird Hello

angezeigt     
coure2011 28.07.2010, 06:23
quelle

4 Antworten

6

Firefox behandelt kleine Verzögerungen anders als IE. Firefox hat eine minimale Verzögerungszeit von 10ms (was auch nicht genau ist). Weitere Informationen finden Sie in den Anmerkungen zu Ссылка .

    
Ben Rowe 28.07.2010, 06:30
quelle
1

Auf meinem PC lief es sowohl in FF als auch in IE, und ich hatte genau die entgegengesetzten Ergebnisse.

Der Grund dafür ist, dass Ihr Timeout nur 10 Millisekunden beträgt. Die Auflösung von Timern unter Windows beträgt ungefähr 10 ms. Es ist daher möglich, dass eine Zeitüberschreitung zuerst auftritt. Um wirklich sicher zu sein, dass eine Sache vor der anderen passiert, sollten Sie definitiv eine größere Lücke zwischen Timeouts haben.

Und selbst dann solltest du nicht erwarten, dass es immer funktioniert: -)

Wenn Sie die Dinge wirklich in der gleichen Reihenfolge ausführen möchten, behalten Sie sie in derselben Codezeile oder setzen Sie Flags, die angeben, ob eine bestimmte Aktion abgeschlossen wurde oder nicht, und überprüfen Sie diese, bevor Sie eine zweite ausführen, die auf der zuerst.

    
Vincent McNabb 28.07.2010 06:31
quelle
0

Die Ausführungsreihenfolge für Timer-Ereignisse ist in Browsern nicht garantiert. Sie werden intern von der nativen Timer-Implementierung des Betriebssystems verarbeitet und können in unterschiedlicher Reihenfolge ausgelöst werden.

Da Sie so wenig Zeit angegeben haben, ist es sehr wahrscheinlich, dass dies der Fall ist.

    
Nathan Osman 28.07.2010 06:31
quelle
0

Nun, ich verstehe es klar.

Was Firefox tut ist, was Sie erwarten, d. h .:

  • Setzt die erste Nachricht nach 1/100 von einem zweiten & amp; speichert den Nachrichtenwert.
  • Zeigt die zweite Nachricht sofort an.
  • Zeigt die erste Nachricht an {wenn 100 Sek über}.

Was IE macht, bringt Zweifel:

  • Setzt die Nachricht nach 1/100 von einer Sekunde.
  • Setzt die Nachricht auf einen neuen Wert, ignoriert neue Timeouts.
  • Zeigt die Nachricht {wenn 1/100 Sekunden über}.

Also, was ich realisiere, ist, dass die Nachrichtenvariable einen globalen Gültigkeitsbereich im IE hat, während Firefox einen Cache mit dem Wert erstellt, der zuletzt an die Timeout-Funktion übergeben wurde. Um dies zu realisieren, verwenden Sie längere Zeiträume von möglicherweise 1000 & amp; 10000 (1 & amp; 10 Sekunden) anstelle von 0 & amp; 10. Dies wird Ihnen zeigen, dass Firefox die Warnung zweimal während IE nur einmal anzeigt.

    
loxxy 28.07.2010 06:53
quelle

Tags und Links