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

Я пытаюсь проверить, загружена ли моя библиотека 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>

12 ответов

Решение

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

Ну, вы используете 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");
    }
}

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

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


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

if (typeof jQuery == 'function')
//or
if (typeof $== 'function')


а также

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


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

if ('undefined' == typeof window.jQuery) {
    // jQuery not present
} else {
    // jQuery present
}

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

Например:

$ === jQuery

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

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

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

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

ВНИМАНИЕ: не используйте jQuery для тестирования вашего jQuery.

Когда вы используете какой-либо код, предоставленный другими пользователями, и если вы хотите отображать сообщение в своем окне, а не в alert или console.log, Затем убедитесь, что вы используете javascript, а не jquery.

Не все хотят использовать alert или console.log

alert('jquery is working');
console.log('jquery is working');

Приведенный ниже код не сможет отобразить сообщение,
потому что мы используем jquery внутриelse (как, черт возьми, сообщение отображается на вашем экране, если у вас нет jquery)

if ('undefined' == typeof window.jQuery) {
    $('#selector').appendTo('jquery is NOT working');
} else {
    $('#selector').appendTo('jquery is working');
}

Вместо этого используйте JavaScript

if ('undefined' == typeof window.jQuery) {
    document.getElementById('selector').innerHTML = "jquery is NOT working";
} else {
    document.getElementById('selector').innerHTML = "jquery is working";
}

Если 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 );
})();

Этот метод можно использовать для любой переменной, ожидающей вашего появления.

Вы можете проверить, существует ли он, и, если он не существует, загрузить его динамически.

function loadScript(src) {
    return new Promise(function (resolve, reject) {
        var s;
        s = document.createElement('script');
        s.src = src;
        s.onload = resolve;
        s.onerror = reject;
        document.head.appendChild(s);
    });
}



async function load(){
if (!window.jQuery){
    await loadScript(`https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js`);
}

console.log(jQuery);

}

load();

Ниже представлен универсальный кроссбраузерный загрузчик JQuery. Он проверяет, полностью ли загружены DOM, HTML, CSS, файлы и ресурсы документа, а также был ли проанализирован и запущен сам файл JQuery. Эта программа проверки работает в старых браузерах и поддерживает старый Internet Explorer (v. 4-11), а также различные пользовательские агенты, начиная с 2001 года. Она ограничена только различными версиями самого JQuery, которые не содержат ошибок в этих браузерах. К сожалению, многие - нет.

Имейте в виду, что вы не можете запускать сценарии, основанные на JQuery, до тех пор, пока файлы JQuery и любые используемые ресурсы не будут загружены, проанализированы и скомпилированы JIT. Вы также можете использовать приведенный ниже код, чтобы проверить, обрабатывается ли DOM на ранней стадии в браузере до загрузки других ресурсов, и запустить ранние сценарии, отличные от JQuery, для работы с DOM. Первая функция ниже демонстрирует эту особенность. Это предполагает, что построена только модель DOM, а многие файлы CSS, изображений и JavaScript все еще не загружены. Это полезно, если вам нужно загружать отложенные скрипты раньше, чем JQuery и другие библиотеки, и по какой-то причине манипулировать DOM.

          // EARLY JAVASCRIPT DOM PROCESSING (non-JQuery)
    // Function to run as soon as the HTML is parsed and DOM rendered.
    function DOMStart(state) {
        if (state == null) {
            state = "Unknown";
        }
        alert('DOM State: ' + state);
    };

    // FULLY LOADED WINDOW/DOCUMENT JAVASCRIPT PROCESSING, plus JQUERY CHECK
    // TEST IF JQUERY IS LOADED (without using JQuery)
    // Function to run as soon as all resources associated with the document are ready and JQuery script files are loaded.

    function JQueryStart(state) {
        if (state == null) {
            state = "Unknown";
        }
        alert('JQuery State: ' + state);

        //if (typeof window.jQuery !== 'undefined') { // Alt. Version #2 check
        if (window.jQuery) {
            // jquery is loaded...
            alert("JQuery is loaded.");

            // JQuery is downloaded. Now use JQuery to test if
            // the document object model is fully
            // loaded again from the point of view of JQuery.
            // In most cases it is based on logic below.
            // It is possible to load this function only when the
            // DOM is ready instead of the whole document and all
            // its files are ready and run a timer to detect when 
            // "window.jQuery" above is true. That would allow you
            // to know JQuery is downloaded prior to the DOM and 
            // utilize it earlier.

            $(document).ready(function () {

                // ======== Begin JQuery Scripts ======== 


            });
        } else {
            // JQuery did not load...
            console.log("JQuery failed to load!");
            alert("JQuery failed to load!");
        }
    };


    // OLD BROWSER PAGE LOADER: This document loading check 
    // supports older browsers, including IE4+ and many older 
    // browsers like Firefox (2006), early Chrome (2010), etc.
    // Note: "interactive" is when the document has finished
    // loading and the document has been parsed and DOM is complete,
    // but sub-resources such as scripts, images, style sheets and
    // frames are still loading. "complete" is when all resources
    // are loaded and right before the "Window.load event fires.
    // Note: "document.onreadystatechange" has support in very old
    // browsers amd may have support from IE4+, It fires as each
    // state of the docuent load process changes below. IE 4-9 only
    // supported "readyState" of "complete".

    // If the document is already loaded and those events fired, run the JQuery function above.

    if (document.readyState) {
        if (document.readyState === "complete" // IE 4-9 only knows "complete"
            || document.readyState === "loaded") {
            JQueryStart("Document fully loaded (early)");
        } else {
            // New browsers should run scripts when the HTML is
            // parsed and the DOM built. Older IE browsers will
            // not support the "DOMContentLoaded" event and instead
            // fire when complete below. This allows newer browsers
            // to fire only when the HTML DOM is ready, which happens
            // right after the readyState=interactive fires.

            if (window.addEventListener) {
                // Listen for the "DOMContentLoaded" event, which occurs
                // after "interactive" but when the HTML DOM is complete.
                // This means the DOM is ready but other resources style 
                // sheets, other scripts, images, etc. may not be.

                window.addEventListener('load', function () {
                    JQueryStart("Window fully loaded (2)");
                }, false);
                window.addEventListener('DOMContentLoaded', function () {
                    DOMStart("DOM complete (early)");
                }, false);
            } else {

                // Run the older page "onreadystatechange" for older
                // browsers. Below, runs when page resources are not
                // yet fully loaded, so set up event listeners based
                // on needs of old/new web browsers script support.
                // This fires each time the document readyState changes,
                // except in IE 4-9 that only supports "complete". Below,
                // the DOM is loaded and parsed, but adding "interactive"
                // to the condition below means other resources like CSS, 
                // images, etc may not have completed yet.
                // Note: Add "interactive" below if needing to run early 
                // scripts as soon as the DOM is complete, and do not require 
                // styles sheets, script files, images, other resources, etc.
                // Note: "interactive" fires before "DOMContentLoaded", but in 
                // IE 9 - 11 fires too early before parsing.

                var isDone = false;
                document.onreadystatechange = function () {
                    if (document.readyState === "complete" // IE 4-9 only knows "complete"
                        || document.readyState === "loaded") {
                        if (!isDone) {
                            isDone = true;
                            JQueryStart("Document fully loaded");
                        }
                    }
                    else if (document.readyState === "interactive") {
                        DOMStart("Document interactive (early)");
                    }
                };
            }
        }
    } else {
        // This is a fallback event format that works well in many older browsers.
        window.onload = function () {
            JQueryStart("Window fully loaded (1)");
        };
    };

Это сработало для меня, когда сценарий иногда запускался в середине страницы (частичный .net) или после полной загрузки страницы (вызов jquery.load())

      window.onload = function(){
   ... jQuery Statements ...
}
if (window.jQuery!==undefined)
    window.onload();

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

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

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

Другие вопросы по тегам