Jak sprawdzić, która wersja jQuery jest załadowana?
466
Jak sprawdzić, która wersja jQuery jest załadowana na maszynie klienta? Klient może mieć załadowane jQuery, ale nie wiem, jak to sprawdzić. Jeśli mają go załadowane, jak sprawdzić wersję i prefiks, takie jak:
Klient może załadować jQuery, jeśli podałeś go jako plik do pobrania. Na czym dokładnie polega problem?
Jared Farrish,
1
Nie wiem, do czego potrzebuje OP, ale jeśli tworzysz skrypt lub wtyczkę wymagającą jQuery, możesz sprawdzić i zgłosić błąd, jeśli go nie ma lub jest to zbyt stara wersja.
Istnieją 2 sposoby sprawdzenia aktualnie załadowanej wersji jquery: jQuery.fn.jqueryi jQuery().jquery(stenografia:) $.fn.jquery$().jquery. Napisałem o tym szczegółowo z linkami do kodu źródłowego jquery, jeśli chcesz głębiej kopać.
Uzbekjon
3
jeszcze prostsza wersja if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard
6
Czek na niezdefiniowany powinien być!==
plankguy
1
Uwaga małe litery :)
The Red Pea
2
Nie używać jQuery().jquery. Tworzy obiekt jQuery za darmo, wystarczy użyć tego, co mówi odpowiedź.
30
Możesz po prostu sprawdzić, czy jQueryobiekt istnieje:
if( jQuery )Rzuci wyjątek, jeśli jQuerynie jest znana i nie będzie działać.
Darin Dimitrov,
Może to owinąć try {...}catch(e){...}?
Akash
2
Nie używać jQuery().jquery. Tworzy obiekt jQuery za darmo. (skopiowano komentarz z innej odpowiedzi)
törzsmókus
19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery
Jeśli otrzymasz numer wersji - zwykle w postaci ciągu - wtedy jQuery zostanie załadowane i z tą wersją pracujesz. Jeśli nie zostanie załadowany, powinieneś wrócić, undefineda może nawet błąd.
Dość stare pytanie i widziałem kilka osób, które już wspomniały o mojej odpowiedzi w komentarzach. Uważam jednak, że czasami świetne odpowiedzi, które pozostają, ponieważ komentarze mogą pozostać niezauważone; zwłaszcza, gdy jest wiele komentarzy do odpowiedzi, możesz przekopać się przez stosy ich w poszukiwaniu klejnotu. Mam nadzieję, że to komuś pomoże!
Jest to nieco lepsze, ale rejestrowanie nie jest przydatne podczas pracy z aplikacją. Lepiej najpierw zapisz zmienną. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
3
Powinieneś owinąć to w blok try / catch dla IE:
// Ensure jquery is loaded -- syntaxed for IE compatibilitytry{var jqueryIsLoaded=jQuery;
jQueryIsLoaded=true;}catch(err){var jQueryIsLoaded=false;}if(jQueryIsLoaded){
$(function(){/** site level jquery code here **/});}else{// Jquery not loaded}
IE nie obsługuje typeof jQuery != 'undefined'? Czy to prawda dla każdego IE, czy tylko starszych?
JJJ
Jest całkiem pewny, że dotyczy to starszych wersji. Co jednak jest bardziej zawstydzającego niż wielki błąd JS uniemożliwiający działanie strony, niezależnie od tego, czy jest to wina przeglądarki;)
AlienWebguy,
To bardzo mi pomogło. Usiłowałem uzyskać dokładne zachowanie w Firefoksie i IE do sprawdzania, czy jQuery jest załadowany czy nie przy użyciu WatiN. Teraz dzięki temu obejściu jestem bardzo szczęśliwy. Dzięki Tobie!
rahoolm
2
W jednej linii i minimalnej liczbie naciśnięć klawiszy (ups!):
Odpowiedzi:
źródło
jQuery.fn.jquery
ijQuery().jquery
(stenografia:)$.fn.jquery
$().jquery
. Napisałem o tym szczegółowo z linkami do kodu źródłowego jquery, jeśli chcesz głębiej kopać.if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
!==
jQuery().jquery
. Tworzy obiekt jQuery za darmo, wystarczy użyć tego, co mówi odpowiedź.Możesz po prostu sprawdzić, czy
jQuery
obiekt istnieje:jQuery().jquery
ma numer wersji.Jeśli chodzi o prefiks,
jQuery
powinien zawsze działać. Jeśli chcesz użyć$
, możesz zawinąć kod w funkcję i przekazaćjQuery
ją jako parametr:źródło
if( jQuery )
Rzuci wyjątek, jeślijQuery
nie jest znana i nie będzie działać.try {...}catch(e){...}
?jQuery().jquery
. Tworzy obiekt jQuery za darmo. (skopiowano komentarz z innej odpowiedzi)Dość stare pytanie i widziałem kilka osób, które już wspomniały o mojej odpowiedzi w komentarzach. Uważam jednak, że czasami świetne odpowiedzi, które pozostają, ponieważ komentarze mogą pozostać niezauważone; zwłaszcza, gdy jest wiele komentarzy do odpowiedzi, możesz przekopać się przez stosy ich w poszukiwaniu klejnotu. Mam nadzieję, że to komuś pomoże!
źródło
… Tylko dlatego, że jak dotąd nie wspomniano o tej metodzie - otwórz konsolę i wpisz:
Jak wspomniano powyżej @Juhana
$().jquery
zwróci numer wersji.źródło
($ === jQuery)?$().jquery:'no jquery';
Odkryłem, że jest to najkrótszy i najprostszy sposób sprawdzenia, czy jQuery jest załadowany:
Ta metoda jest używana przez http://html5boilerplate.com i inne.
źródło
Moje preferencje to:
Wynik:
Załadowano jQuery 1.8.0
źródło
let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
Powinieneś owinąć to w blok try / catch dla IE:
źródło
typeof jQuery != 'undefined'
? Czy to prawda dla każdego IE, czy tylko starszych?W jednej linii i minimalnej liczbie naciśnięć klawiszy (ups!):
źródło
Przejdź do narzędzia> konsola programisty i napisz jedno z poniższych poleceń
jQuery.fn.jquery
console.log(jQuery().jquery);
źródło
Zgodnie z szablonowym blogiem potworów , pisząc, poniższe skrypty podadzą ci wersję jquery na stronie, którą teraz odwiedzasz.
źródło
.....
źródło
$
.$
? To nie jest unikalne dla jQuery.jQuery
nie jest załadowany? (Rzuci aReferenceError
). Powyższa odpowiedź jest poprawna i dlatego ludzie głosują w dół na twoją odpowiedź.