Я разрабатываю виджет JavaScript, который зависит от jQuery. Виджет может загружаться или не загружаться на страницу, на которой уже загружен jQuery. В этом случае возникает много проблем ...
Если на веб-странице нет jQuery, я должен загрузить свой собственный jQuery. Однако при этом, похоже, возникает деликатная временная проблема. Например, если мой виджет загружается и выполняется до завершения загрузки и выполнения jQuery, я получаю ошибку jQuery is not defined
.
Если на веб-странице есть jQuery, я обычно могу с ней работать. Однако, если версия jQuery старая, я бы хотел загрузить свою. Однако, если я загружаю свою собственную, мне нужно сделать это так, чтобы не топать их переменную $
. Если я установлю jQuery.noConflict()
и любой из их сценариев будет зависеть от $
, то я просто сломаю их страницу.
Если веб-страница использует другую библиотеку javascript (например, prototype), мне нужно было также быть чувствительным к переменной $
прототипа.
Из-за всего вышесказанного, кажется, легче не зависеть от jQuery. Но прежде чем идти по этому пути, который будет в основном переписывать мой код виджета, я сначала хотел спросить совета.
Ниже приведен основной скелет моего кода, включая ошибку синхронизации и иногда $
ошибки:
<script type="text/javascript" charset="utf-8">
// <![CDATA
if (typeof jQuery === 'undefined') {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '{{ URL }}/jquery.js';
head.appendChild(script);
}
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>
Мой виджет имеет следующую структуру:
(function($) {
var mywidget = {
init: function() {
...
}
};
$(document).ready(function() {
mywidget.init();
});
})(jQuery);
Если есть какие-либо указатели или ресурсы для создания виджета, которые могут работать во всех упомянутых средах, они будут очень признательны.