Chcę odesłać użytkowników naszej witryny do strony błędów, jeśli używają wersji Internet Explorerwcześ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
useragentcią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 IEprzeglą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?