Memeriksa apakah jquery diambil menggunakan Javascript


176

Saya mencoba memeriksa apakah Perpustakaan Jquery saya dimuat ke halaman HTML saya. Saya memeriksa untuk melihat apakah itu berfungsi, tetapi ada sesuatu yang tidak benar. Inilah yang saya miliki:

<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
Jangan gunakan huruf kapital R dalam "$ (dokumen).
Ready

7
alert(window.$?1:0)
Thielicious

Mengapa Anda masih menggunakan standar xhtml lama? gunakan <!doctype html>saja
Luke the Geek

Jika $(document)fungsi siap berjalan sama sekali, maka jquery dimuat. Jadi Anda bisa melakukan $(document).ready(function(){ alert("Ready!"); }); Granted, ini tidak akan menampilkan peringatan jika jquery gagal dijalankan. Tapi itu sudah cukup, jika Anda hanya perlu memverifikasi bahwa Anda telah merujuk ke perpustakaan jquery dengan benar.
ToolmakerSteve

Jawaban:


338

ada sesuatu yang tidak beres

Nah, Anda menggunakan jQuery untuk memeriksa keberadaan jQuery. Jika jQuery tidak dimuat maka $()bahkan tidak akan berjalan sama sekali dan panggilan balik Anda tidak akan dijalankan, kecuali jika Anda menggunakan pustaka lain dan pustaka itu terjadi untuk berbagi $()sintaks yang sama .

Hapus Anda $(document).ready()(gunakan sesuatu seperti window.onload):

window.onload = function() {
    if (window.jQuery) {  
        // jQuery is loaded  
        alert("Yeah!");
    } else {
        // jQuery is not loaded
        alert("Doesn't Work");
    }
}

1
Ini masih akan menimbulkan kesalahan seperti saat jQuerytidak terdefinisi. Anda perlu memeriksa window.jQuery.
gilly3

@ gilly3: Ya, masalah pelingkupan sial. Tetap.
BoltClock

Saya memiliki file jquery-1.6.3.min.js di direktori yang sama dengan file html. Tidak yakin mengapa itu tidak dimuat.
SoftwareSavant

3
@ DemainEvent: Apakah mereka berdua di direktori root? Anda srcmemiliki /petunjuk, itu berarti mencari di root.
BoltClock

Sebenarnya tidak. Biarkan saya mengubahnya dan mencobanya.
SoftwareSavant

46

Sesuai tautan ini :

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


ada beberapa komentar lagi di tautan seperti,

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

//or

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

// or

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


Semoga ini mencakup sebagian besar cara yang baik untuk menyelesaikan hal ini !!


2
@JakeN Setelah jangka waktu tertentu, downvotes tidak dapat dibatalkan kecuali posnya diedit. Namun ada satu masalah dengan postingan ini: if (jQuery) {akan membuat kesalahan dalam mode ketat jika jQuery tidak dimuat, sehingga snipet kode terakhir adalah saran yang buruk.
JLRishe

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

15

Anda dapat melakukan ini dengan cepat di tab-konsol ketika memeriksa halaman web Anda.

Misalnya:

$ === jQuery

Jika kembali trueberarti itu dimuat.


Ini akan menimbulkan pengecualian jika jQuery tidak dimuat, meskipun:Uncaught ReferenceError: jQuery is not defined
Batkins

10

Hanya sedikit modifikasi yang mungkin benar-benar menyelesaikan masalah:

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

Alih-alih $(document).Ready(function()digunakan window.onload = function().


1

Jika jQuerysedang memuat secara tidak sinkron, Anda dapat menunggu hingga didefinisikan, memeriksa setiap periode waktu:

(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 );
})();

Metode ini dapat digunakan untuk variabel apa pun, Anda sedang menunggu untuk muncul.


-2

Anda cukup mengetik window.jQueryKonsol. Jika mengembalikan fungsi (e, n) ... Kemudian dipastikan bahwa jquery dimuat dan berfungsi dengan sukses.


-4

Cara cepat adalah menjalankan perintah jQuery di konsol pengembang. Pada peramban apa pun tekan F12 dan coba akses salah satu elemen.

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

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.