2012-03-26 13 views
0

Ich habe etwas Javascript, das die Seite scrollt, wenn der Benutzer ein Element am Rand des Fensters zieht. Es gibt eine Funktion so etwas wie dieses (vereinfacht):Heuristik für relative Browser-Leistung in Anwendung

var scroll = function() { 
    var scrollTop = $myElement.scrollTop(); 
    $myElement.scrollTop(scrollTop += delta); 
    setTimeout(scroll, 25); 
} 

ich auf älteren Browsern in Performance-Probleme laufen, und ich kann sie etwas mildern, indem die Auflösung meiner scroll() Funktion von 25 zu reduzieren (wie oben gesehen) zu 100 oder so.

Wie kann ich überprüfen, ob ein Browser langsamer ist und die Auflösung verringern?

Ich würde lieber User Agent Sniffing vermeiden.

+0

Setzen Sie es auf 50-70 als Standard und versuchen Sie nicht, etwas zu tun, was Sie nicht können – dynamic

Antwort

0

ein Mensch does not notice "slowness" up until 200-300ms, stoßen Sie Ihren Timer. niemand wird diese Verzögerung in vernünftigen Grenzen sehen.

auch, den Timer zu drücken, um so schnell zu sein, ist die Ursache des Problems auch. alte Broswer JS sind nicht so schnell. Versuchen Sie, einen Task-Manager zu öffnen, und sehen Sie eine Spitze auf Ihrer CPU, während Sie durch diesen sehr schnellen Timer ziehen.

+0

, wenn ich das Timeout auf 25 oder 15 einstellen, ist die Änderung spürbar glatter. Probieren Sie es auf einem Tisch mit 300-500 Reihen aus. Ich verstehe, dass rechenintensive Aufgaben die CPU drücken :) Ich bin nur neugierig, ob es einen guten Weg gibt, ein Gefühl dafür im Code zu bekommen, so dass ich mich entsprechend anpassen kann. – aaronstacy

+0

* "Wie kann ich überprüfen, ob ein Browser langsamer ist und die Auflösung reduziert?" * - Warum nicht * "es auf allen Browsern funktionieren lassen" *? – Joseph

+0

Sie scheinen, als würden Sie einen guten QA-Ingenieur machen. Es ist in Ordnung, es funktioniert in allen Browsern :) Ich möchte jedoch die Benutzerfreundlichkeit in modernen Browsern verbessern. – aaronstacy