Перевірка завантаження 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>

3
Не використовуйте капітал R у "$ (документ). Готовий"
Серіган

7
alert(window.$?1:0)
Тиелісі

Чому ви все ще використовуєте старий стандарт xhtml? просто використовуйте <!doctype html>замість цього
Люка

Якщо $(document)готова функція працює взагалі, то завантажується jquery. Таким чином, ви можете просто зробити $(document).ready(function(){ alert("Ready!"); }); Granted, це не показуватиме попередження, якщо jquery не запуститься. Але цього достатньо, якщо вам просто потрібно переконатися, що ви правильно вказали бібліотеку jquery.
ToolmakerSteve

Відповіді:


338

щось не так

Ну, ви використовуєте 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");
    }
}

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
}

15

Це можна зробити швидко на вкладці консолі під час огляду веб-сторінки.

Наприклад:

$ === jQuery

Якщо він повертається, trueце означає, що він завантажений.


Це призведе до виключення, якщо 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 завантажений і працює успішно.


-4

Швидкий спосіб - запустити команду jQuery в консолі розробника. У будь-якому браузері натисніть F12 і спробуйте отримати доступ до будь-якого елемента.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.