• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Komisches Verhalten in FF

dertypdernixkan

New member
Abend

Kurze Frage an die Fachkundigen.

In einer externen JS-Datei habe ich folgendes notiert
Code:
[COLOR=#000000]var pagespeed = false;[/COLOR]

Das wird später auf der Index überschrieben
Code:
window.onload = function() {
	setTimeout(function() {
		var a = window.performance.timing, r = a.loadEventEnd - a.navigationStart;
		pagespeed = r;
		if (((readCookie('speedup') === null && typeof(r) === 'number' && r < 1500) || r < 600) && r > 0) {
			var http = new XMLHttpRequest();
			http.open('POST', location.protocol+'//'+location.host+'/api/service/loadtimetrack', true);
			http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			http.onreadystatechange = function() {
				if (http.readyState === 4 && http.status === 200) {
					console.log(JSON.parse(http.responseText));
					document.cookie = "speedup="+r+"; path=/";
				}
			};
			http.send('speed='+r);
		}
	}, 0);
};

Der Code macht was er soll! Ich hatte aber kurzzeitig einen anderen Code
Code:
(function(window, document, undefined) {
	setTimeout(function() {
		var a = window.performance.timing, r = a.loadEventEnd - a.navigationStart;
		pagespeed = r;
		if (((readCookie('speedup') === null && typeof(r) === 'number' && r < 1500) || r < 600) && r > 0) {
			var http = new XMLHttpRequest();
			http.open('POST', location.protocol+'//'+location.host+'/api/service/loadtimetrack', true);
			http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			http.onreadystatechange = function() {
				if (http.readyState === 4 && http.status === 200) {
					console.log(JSON.parse(http.responseText));
					document.cookie = "speedup="+r+"; path=/";
				}
			};
			http.send('speed='+r);
		}
	}, 0);
})(window, document);

Der funktionierte aber in FF nicht korrekt, die Ausgabe der eigentlichen Ladezeit wurde in FF immer als Negativwert ausgegeben. Ich verstehe nicht warum das so ist, kann mir das jemand erklären? :confused:
 
* verschoben aus js *

kannst du uns zwei url's geben oder fiddle's machen wo man das live sehen kann?
 
Das sollte nicht nur beim FF so sein. Du musst schon warten, bis die Seite geladen ist, bevor du ausrechnen kannst, wie lange es gedauert hat, diese zu laden.

Wenn du etwas mit (function(){...}()); ausführst, wird das sofort ausgeführt und das setTimeout garantiert dir auch nicht, dass die Seite danach fertig geladen ist. Ich denke, dass es in den anderen Browser funktioniert hat, da die Seite schon im Cache war.
 
@mikedoe - Eine URI nicht, ist alles Lokal aufm Rechner. Fiddl habe ich noch nie gemacht :O

@kkapsner - Also werden
Code:
(function(){...}());
sofort aufgerufen wenn sie durch den Parser sind statt zu warten bis die Seite komplett fertig ist?

Das Timeout ist komischerweise bei allen Browsern nötig, ohne kommen teilweise Zahlen raus die mit denen aus der Konsole nicht nicht annähernd übereinstimmen.

Ohne liegen die Abweichungen weit über 100ms, mit schwankt es von +-20ms
 
Zurück
Oben