Wykryj wersję IE (wcześniejszą niż v9) w JavaScript

Chcę odrzucić użytkowników naszej strony internetowej na stronę błędu, jeśli używają wersjiInternet Explorer przed v9. To nie jest warte naszego czasu i pieniędzy na wsparcieIE pre-v9. Użytkownicy wszystkich innych przeglądarek innych niż IE są w porządku i nie powinni być odbijani. 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 zadziała?

Aby odrzucić kilka komentarzy, które najprawdopodobniej przyjdą po mojej myśli:

Tak, wiem, że użytkownicy mogą wykuć swojeuseragent strunowy. Nie martwię się.Tak, wiem, że programiści programujący wolą wąchać wsparcie dla funkcji zamiast typu przeglądarki, ale nie sądzę, aby to podejście miało sens w tym przypadku. Wiem już, że wszystkie (istotne) przeglądarki inne niż IE obsługują funkcje, których potrzebuję i to wszystkopre-v9 IE przeglądarki nie. Sprawdzanie funkcji według funkcji w całej witrynie byłoby marnotrawstwem.Tak, wiem, że ktoś próbuje uzyskać dostęp do witryny za pomocąIE v1 (lub> = 20) nie ustawiłoby „badBrowser” na true, a strona ostrzegawcza nie byłaby wyświetlana poprawnie. To ryzyko, które chcemy podjąć.Tak, wiem, że Microsoft ma „komentarze warunkowe”, które można wykorzystać do precyzyjnego wykrywania wersji przeglądarki. IE nie obsługuje już komentarzy warunkowychIE 10, czyniąc to podejście absolutnie bezużytecznym.

Jakieś inne oczywiste problemy, o których należy wiedzieć?

questionAnswers(30)

yourAnswerToTheQuestion