Wir haben kürzlich Probleme bekommen, weil seit der Veröffentlichung von Firefox 4 ScrollPosition-Daten niemals an Firefox-Benutzer gesendet werden. Dies wird dadurch verursacht, dass die Browsercaps-Datei nur Funktionen für Firefox 3.x spezifiziert. Eine Lösung für dieses Problem besteht darin, die browsercaps-Datei auf jedem Server zu aktualisieren und jederzeit eine neue Version von Firefox (oder Chrome oder was auch immer) zu veröffentlichen. Nun, bevor wir überhaupt eine Chance hatten, dieses Problem anzugehen, sind wir bereits bei Firefox 6 und es scheint nur ein Rennen zu sein, das wir nicht weiter betreiben wollen.
Es stellt sich heraus, dass das Festlegen von Page.ClientTarget="uplevel" in der Masterseite (also für alles bedingungslos) unser spezifisches Firefox ScrollPosition Problem behebt. Was sind die negativen Konsequenzen für diese Lösung? Haben Benutzer von Android-Browsern eine schlechtere Erfahrung? Werden sie einfach unnötig größere Seiten herunterladen? Gibt es einen Grund, warum wir das nicht tun sollten?
Die Dokumentation für Page.ClientTarget ist ziemlich gruselig:
uplevel, das Browserfunktionen angibt, die dem Internet entsprechen Explorer 6.0.
.. und scheint falsch oder zumindest irreführend. Es scheint, als wäre es zu einer Zeit geschrieben worden, als IE6 der leistungsfähigste Browser war. Bedeutet "uplevel" wirklich "gehe davon aus, dass der Browser zu allem fähig ist" oder "behandle es so, als würdest du IE6 behandeln"?
Wenn Sie WebForms sagen wollen, dass sie effektiv "ablegen" soll, funktioniert die Einstellung von Uplevel, obwohl Sie dies in PageInit tun möchten, das früher als die Masterseite ist. An diesem Punkt gehen WebForms davon aus, dass jeder ein neuerer Browser ist als Sie selbst.
Für serverseitige Kompatibilität, die die tatsächlichen Beschränkungen des Browsers nicht testen kann, verwende ich lieber eine Blacklist als eine Whitelist: Wenn ein Browser nicht nicht unterstützt, dann unterstütze ich Feature gehe davon aus, dass es das unterstützt.
Sie können auch alle Versionen eines Browsers, z. keine Version von IE unterstützt Feature X). Dazu müssen Sie die Blacklist aktualisieren, sobald IE Feature X unterstützt.
Browser-Upgrades sollten dieses Schema nicht brechen.
Dies ist keine Antwort auf die Frage "Was sind die Nachteile", sondern:
Sie können reguläre Ausdrücke in der Browserversionserkennung innerhalb der browsercaps-Dateien verwenden.
Beispielsweise hat Microsoft am 13. November 2011 ein Update für ASP.NET 4.0 veröffentlicht, mit dem IE10 zur übergeordneten Liste hinzugefügt wurde (und ein Fehler in der Datei ie.browser
in \Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers
behoben wurde). Sie hatten einen regulären Ausdruck, der nur auf eine einstellige Hauptversion geprüft wurde, aber nach dem Patch wird jede IE-Version & gt; = 6 als höher angesehen.
Vor der Änderung:
%Vor%Nach der Änderung:
%Vor% Ich nehme an, dass Sie nicht mehr auf dieses Problem stoßen, denn mindestens ab dem 26. Oktober 2011 verwendet die firefox-Direktive auch eine Regex, um Uplevel-Versionen zu erkennen & gt; = 3: (aus der firefox.browser
-Datei) )
Aber wenn Sie immer noch probs haben, verwenden Sie einfach eine zukunftsorientierte Regex (eine, die nicht wie in früheren Patches einen "Single-Digit-Major-Version" -Bug hat) in der firefox.browser
-Datei
Tags und Links asp.net cross-browser