Wykrywanie przeglądarek, które nie są obsługiwane przez jQuery (2)

Wybacz mi, jeśli istnieje oczywista odpowiedź na to pytanie, ale nie byłem w stanie go znaleźć. Rozważam przejście na jQuery 2 i chociaż nie martwię się o obsługę starszych przeglądarek, chciałbym móc informować użytkowników z nieobsługiwanymi przeglądarkami, że nie mogą korzystać z witryny.

Widzę tutaj (http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/), że możesz używać komentarzy warunkowych do plików gałęzi .js w różnych wersjach IE, ale wierzę, że jQuery 2.0 również nie obsługuje wielu innych przeglądarek, nie tylko IE, więc nie sądzę, żeby to zrobiło to samo [edytować: to jest złe, patrz większa edycja poniżej].

W idealnym świecie przestawiłbym się na jQuery 2, a następnie użyłem pojedynczej funkcji javascript, która jest wywoływana, gdy jQuery mówi mi, że nie obsługuje przeglądarki. Czy istnieje prosty sposób na zrobienie tego, czego mi brakuje?

Dzięki.

EDYTOWAĆ:

Natknąłem się na ten post (http://bugs.jquery.com/ticket/13404), który mnie tu skierował:http://jquery.com/browser-support/. Okazuje się, że jeśli chodzi o wsparcie, jQuery 2 różni się od jQuery 1.9 na przeglądarkach IE. W związku z tym, być może lepszym pytaniem jest, jak wykryć przeglądarki, które nie są obsługiwane przez jQuery (ogólnie, nie tylko w wersji 2) - zaktualizowałem tytuł pytania.

EDIT2:

Ponieważ wykrywanie funkcji jest najbardziej zalecanym podejściem do tego problemu, metoda wsparcia jQuery wygląda na istotną tutaj (http://api.jquery.com/jQuery.support/). Jednak wydaje się dość niepewne polegać na (ponieważ może się zmienić bez powiadomienia).

Przypuszczam, że to stwarza kluczowe pytanie.Jak mam mieć pojęcie, jakie funkcje jQuery są lub nie podlegają potencjalnemu brakowi wsparcia ze starych przeglądarek? Na przykład, jeśli ktoś wejdzie na stronę z 4-wersyjną starą wersją Firefoksa, nie miałbymkażdy pomysł, jakie funkcje muszę przetestować. Byłoby tak, gdyby jQuery mogło zaoferować jakiś w pełni obsługiwany test funkcji, taki jak HTML5:http://html5test.com/

EDIT3:

Dobra, więc z warunkowymi instrukcjami dołączania (podświetlonymi w odpowiedziach poniżej i na stronie jQuery) możesz radzić sobie ze starymi wersjami IE. Jednak dla innych przeglądarek jest to trochę skomplikowane. Ponieważ nie można polegać na jQuery, aby powiedzieć cokolwiek o obsłudze przeglądarki dla funkcji x, y lub z, moim podejściem jest po prostu zapytanie do bazowego javascript. Jeśli chcesz zapytać o obsługę opartą na CSS, możesz użyć modernizr. W przypadku obsługi opartej na javascript jest to metoda, której używam do wykrywania SUPER starych wersji innych przeglądarek:

function browser_ok() {

    if  (
            ( !Array.prototype.indexOf ) ||
            ( !Array.prototype.forEach ) ||
            ( !String.prototype.indexOf ) ||
            ( !String.prototype.trim ) ||                
            ( !Function.prototype.bind ) ||
            ( !Object.keys ) ||
            ( !Object.create ) ||
            ( !JSON ) ||
            ( !JSON.stringify ) ||
            ( !JSON.stringify.length ) ||
            ( JSON.stringify.length < 3 )
        )
    {
        return false;
    }

    // # local storage support
    // source: http://diveintohtml5.info/storage.html

    try {
        var local_storage_support = ( 'localStorage' in window && window['localStorage'] !== null );
        if ( !local_storage_support ) {
            throw new Error("local_storage_support: failed");
        }
    }
    catch ( e ) {
        return false;
    }

    // # AJAX uploads

    if ( !window.FormData || !window.FileReader ) {
        return false;
    }

    // # HTML data elements

    var body = $("body");
    body.data("browser_support_test",42);
    if ( body.data("browser_support_test") !== 42 ) {
        return false;
    }
    else {
        body.removeData("browser_support_test");
    }

    return true;
}

AFAICT, ta funkcja powinna wyeliminować wszystkie przeglądarki, które mogą powodować problemy z jQuery z powodu jego podstawowej funkcjonalności. Jeśli chcesz robić cokolwiek wymyślnego, to prawdopodobnie istnieje pewna funkcjonalność, o której wiesz, że potrzebujesz, więc możesz ją sprawdzić.

questionAnswers(2)

yourAnswerToTheQuestion