Я работаю над виджетами, встроенными на веб-сайт клиентов, и загружает файл jquery. однако нам нужно определить, загружен ли jquery на странице клиентов, чтобы избежать конфликтов, а затем не загружать наш собственный jquery.
В качестве побочного элемента виджет работает во всех версиях jquery. Используемый код...
if (typeof jQuery == 'undefined') {
console.log("NOT LOADED");
scripts.push("https://d33f10u0pfpplc.cloudfront.net/perun/v1/js/widget/betaV2/jquery-1.8.2-min.js");
}
Это работает при тестировании на месте, однако, когда он был запущен на некоторых сайтах, мы получили...
type error $ tabs (...) не является функцией
кажется, что jquery на сайтах хоста, должно быть, не была полностью загружена, это моя первоначальная теория (может быть, и не так)
есть ли способ улучшить обнаружение jquery, используемое выше? или если вы знаете, почему он не работает, я рад узнать. благодаря
Прежде всего, $tabs
не является стандартной функцией jQuery. Если это часть плагина, вам нужно также убедиться, что он включен.
Также убедитесь, что jQuery не запускается в режиме noConflicts
. В этом случае jQuery
может быть определен, но не $
.
Вы проверяете состояние загрузки браузера? Javascript обычно выполняется в то время, когда браузер разбирает его. JQuery - это более крупный файл, и иногда он будет выполнять первый код.
Чтобы решить эту проблему, убедитесь, что ваш собственный код выполняется после загрузки dom:
$(function() {
// your code here
});
Альтернатива 2 - проверить, что
scripts.push()
точно делает. Он должен быть асинхронным, просто добавлять только запрос файла не гарантирует, что файл загружен и проанализирован. Возможно, это твоя проблема.
Использование jQuery в виджетах не является оптимальным. Можно ли записать его в native js?
Вероятно, это не поможет, но в примере на http://www.initializr.com/
jQuery проверен как
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.1.min.js"><\/script>')</script>
Проверьте версию jquery, и ваша версия не имеет функции jQuery $tabs
.
Тогда только вы получили эту ошибку типа
$ tabs (...) не является функцией.
В противном случае попробуйте новую версию файла jquery_ui.