/ / Sprawdź, czy załadowano jQuery i jQuery UI - jquery, jquery-ui, undefined, loaded

Sprawdź, czy załadowano jQuery i jQuery UI - jquery, jquery-ui, undefined, loaded

Witaj, muszę zbudować widżety 3rd Party zJavaScript i php. Widżety te będą musiały być używane w jQuery i jQuery UI, a być może w przyszłości inne biblioteki i wtyczki jQuery. więc gdy mój klient umieszcza ten widget na swojej stronie, muszę wiedzieć, czy jQuery i jQuery UI są już załadowane, a jeśli nie, to załaduj ja. Zbudowałem coś, ale nie działa.

    <script>
if (typeof jQuery == "undefined") {
// jQuery is not loaded
//alert("jQuery is not loaded");
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://code.jquery.com/jquery-1.9.1.js";
document.getElementsByTagName("head")[0].appendChild(script);

var script_ui = document.createElement("script");
script_ui.type = "text/javascript";
script_ui.src = "http://code.jquery.com/ui/1.10.3/jquery-ui.js";
document.getElementsByTagName("head")[0].appendChild(script_ui);

} else {
// jQuery is loaded
//alert("jQuery is loaded");
if (typeof jQuery.ui !== "undefined") {
// ui plugin exists
alert("ui plugin exists");
} else {
// ui plugin DOES NOT exist
//alert("ui plugin DOES NOT exist");
var script_ui = document.createElement("script");
script_ui.type = "text/javascript";
script_ui.src = "http://code.jquery.com/ui/1.10.3/jquery-ui.js";
document.getElementsByTagName("head")[0].appendChild(script_ui);
}
}
</script>

Działa to dobrze, ale gdy próbuję pracować z datepicker jQuery otrzymuję ReferenceError: jQuery nie jest zdefiniowany.

    <script>
jQuery(document).ready(function() {
// Handler for .ready() called.
jQuery(function() {
jQuery( "#datepicker" ).datepicker();
});
});
</script>

Nawet bez jQuery (document) .ready (function () To nie działa

Proszę Hellp ...

Odpowiedzi:

6 dla odpowiedzi № 1

To powinno wystarczyć, jeśli dobrze zrozumiałem problem, funkcja jQuery () jest zdefiniowana tylko wtedy, gdy jest już załadowana.

if (jQuery) { //jQuery is loaded }

Możesz to zrobić dla potrzebnych funkcji, niezależnie od tego, czy jest to jQuery, jQuery-ui czy coś innego.


0 dla odpowiedzi nr 2

Do czasu

<script>
jQuery(document).ready(function() {
// Handler for .ready() called.
jQuery(function() {
jQuery( "#datepicker" ).datepicker();
});
});
</script>

został osiągnięty, jQuery niekoniecznie musi być zrobioneładowanie, przeglądarka nie wie, co z nią zrobić, próbuje go wykonać i mówi: "Nie mam pojęcia, co to jest jQuery". Jeśli jednak później wywołasz ten sam blok kodu, powinien on działać poprawnie.

Najprostszym sposobem obejścia tego jest postawienietwoja procedura obsługi $ (document) .ready () do oddzielnego skryptu .js i dołącz ten skrypt do twojego nagłówka, tak aby jQuery zadzwonił do obsługi zdarzenia, gdy jest gotowy, a nie na odwrót. Stworzyłem skrzypce, aby to pokazać: http://jsfiddle.net/Cjv2k/4/


0 dla odpowiedzi № 3

Możesz pętli, aż obiekt jQuery jest prawidłowe za pomocą tego:

var checkJQ = setInterval(function() {
if(jQuery) {
console.log("jQuery loaded");
clearInterval(checkJQ);
}
}, 300);