Проверка, загружен ли jquery с использованием Javascript

176

Я пытаюсь проверить, загружена ли моя библиотека Jquery на мою HTML-страницу. Я проверяю, работает ли это, но что-то не так. Вот что у меня есть:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="/query-1.6.3.min.js"></script>
        <script type="text/javascript">
          $(document).ready(function(){
             if (jQuery) {  
               // jQuery is loaded  
               alert("Yeah!");
             } else {
               // jQuery is not loaded
               alert("Doesn't Work");
             }
          });
        </script>
SoftwareSavant
источник
3
Не используйте заглавную букву R в "$ (document) .Ready"
Сериган
7
alert(window.$?1:0)
Thielicious
Почему вы все еще используете старый стандарт xhtml? просто используйте <!doctype html>вместо этого
Люк Компьютерщик
Если $(document)функция ready вообще выполняется, загружается jquery. Таким образом, вы можете просто сделать $(document).ready(function(){ alert("Ready!"); }); Granted, это не будет отображать предупреждение, если JQuery не запускается. Но этого достаточно, если вам просто нужно проверить, правильно ли вы ссылались на библиотеку jquery.
ToolmakerSteve

Ответы:

339

что-то неправильно

Что ж, вы используете jQuery для проверки наличия jQuery. Если jQuery не загружен, он $()даже не запустится вообще, и ваш обратный вызов не будет выполнен, если только вы не используете другую библиотеку и эта библиотека использует тот же $()синтаксис.

Удалите свой $(document).ready()(используйте что-то вроде window.onloadэтого):

window.onload = function() {
    if (window.jQuery) {  
        // jQuery is loaded  
        alert("Yeah!");
    } else {
        // jQuery is not loaded
        alert("Doesn't Work");
    }
}
BoltClock
источник
1
Это все равно выдаст ошибку как есть, когда jQueryне определено. Вам нужно проверить window.jQuery.
gilly3
@ gilly3: Да, надоедливые проблемы со сферой. Исправлена.
BoltClock
У меня есть файл jquery-1.6.3.min.js в том же каталоге, что и HTML-файл. Не уверен, почему он не загружается.
SoftwareSavant
3
@DmainEvent: они оба в корневом каталоге? У вас srcесть ведущий /, это означает, что он смотрит в корень.
BoltClock
Вообще-то, нет. Позвольте мне изменить это и дать ему шанс.
SoftwareSavant
46

По этой ссылке:

if (typeof jQuery == 'undefined') {
    // jQuery IS NOT loaded, do stuff here.
}


в комментариях есть еще несколько ссылок, например,

if (typeof jQuery == 'function') {...}

//or

if (typeof $== 'function') {...}

// or

if (jQuery) {
    alert("jquery is loaded");
} else {
    alert("Not loaded");
}


Надеюсь, что это охватывает большинство хороших способов сделать это !!

Тушар Шукла
источник
2
@JakeN Через определенное время отрицательные голоса не могут быть отменены, если сообщение не будет отредактировано. Однако в этом посте есть одна проблема: выдает if (jQuery) {ошибку в строгом режиме, если jQuery не загружен, так что последний фрагмент кода является плохим предложением.
JLRishe
21
if ('undefined' == typeof window.jQuery) {
    // jQuery not present
} else {
    // jQuery present
}
Niko
источник
15

Вы можете сделать это быстро на вкладке консоли при проверке вашей веб-страницы.

Например:

$ === jQuery

Если он возвращается, trueзначит, он загружен.

Alexein
источник
Это вызовет исключение, если jQuery не загружен, однако:Uncaught ReferenceError: jQuery is not defined
Batkins
10

Просто небольшая модификация, которая может решить проблему:

window.onload = function() {
   if (window.jQuery) {  
       // jQuery is loaded  
       alert("Yeah!");
   } else {
    location.reload();
   }
}

Вместо $(document).Ready(function()использования window.onload = function().

Ника Цилосани
источник
1

Если jQueryзагрузка выполняется асинхронно, вы можете подождать, пока она не будет определена, проверяя ее каждый период времени:

(function() {
    var a = setInterval( function() {
        if ( typeof window.jQuery === 'undefined' ) {
            return;
        }
        clearInterval( a );

        console.log( 'jQuery is loaded' ); // call your function with jQuery instead of this
    }, 500 );
})();

Этот метод можно использовать для любой переменной, которую вы ожидаете появления.

В. Волков
источник
-2

Вы можете просто ввести window.jQueryв консоли. Если он возвращает функцию (e, n) ... Затем подтверждается, что jquery загружен и работает успешно.

Bharadwaj
источник
-4

Быстрый способ - запустить команду jQuery в консоли разработчика. В любом браузере нажмите F12 и попробуйте получить доступ к любому элементу.

 $("#sideTab2").css("background-color", "yellow");

введите описание изображения здесь

Джаджикант Пимарла
источник