Chcę odesłać użytkowników naszej witryny do strony błędów, jeśli używają wersji Internet Explorer
wcześniejszej niż v9. Wspieranie nie jest warte naszego czasu i pieniędzy IE pre-v9
. Użytkownicy wszystkich innych przeglądarek innych niż IE mają się dobrze i nie należy ich odrzucać. Oto proponowany kod:
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 && //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1 //v10, 11, 12, etc. is fine too
);
if(badBrowser){
// navigate to error page
}
}
Czy ten kod załatwi sprawę?
Aby odpowiedzieć na kilka komentarzy, które prawdopodobnie pojawią się po mojej stronie:
- Tak, wiem, że użytkownicy mogą sfałszować swój
useragent
ciąg. Nie martwię się - Tak, wiem, że specjaliści od programowania wolą wykopywać obsługę funkcji zamiast przeglądarki, ale nie sądzę, aby takie podejście miało sens w tym przypadku. Wiem już, że wszystkie (odpowiednie) przeglądarki inne niż IE obsługują funkcje, których potrzebuję, i że wszystkie
pre-v9 IE
przeglądarki nie. Sprawdzanie poszczególnych funkcji w witrynie byłoby marnotrawstwem. - Tak, wiem, że ktoś próbujący uzyskać dostęp do witryny przy użyciu
IE v1
(lub> = 20) nie dostałby wartości „badBrowser” ustawionej na wartość true, a strona ostrzegawcza nie byłaby wyświetlana poprawnie. To ryzyko, które jesteśmy gotowi podjąć. - Tak, wiem, że Microsoft ma „komentarze warunkowe”, których można użyć do precyzyjnego wykrywania wersji przeglądarki. IE nie obsługuje już komentarzy warunkowych
IE 10
, co czyni tę metodę całkowicie bezużyteczną.
Czy są jeszcze jakieś oczywiste problemy?