Я разрабатываю виджет javascript, который зависит от jQuery. Виджет может быть загружен или не загружен на страницу, на которой уже загружен jQuery. В этом случае есть много проблем...
-
Если на веб-странице нет jQuery, я должен загрузить свой собственный jQuery. Тем не менее, кажется, что есть тонкая проблема времени при выполнении этого. Например, если мой виджет загружается и выполняется до того, как jQuery завершит загрузку и выполнение, я получаю ошибку
jQuery is not defined
. -
Если веб-страница имеет jQuery, я обычно могу с ней работать. Однако, если версия jQuery устарела, я бы хотел загрузить свою собственную. Однако, если я загружаю свои собственные, мне нужно сделать это так, чтобы не топать в их переменной
$
. Если я установилjQuery.noConflict()
, и любой из их сценариев зависит от$
, то я только что сломал их страницу. -
Если веб-страница использует другую библиотеку javascript (например, прототип), мне также нужно быть чувствительным к прототипу
$
.
Из-за всего вышеизложенного, кажется, легче не зависеть от 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);
Если есть какие-либо указатели или ресурсы для достижения виджета, который может работать во всех упомянутых средах, они будут очень признательны.