Я работаю над небольшим скриптом букмарклета (один большой IIFE). Сценарий ранее был создан для страниц, содержащих jQuery, и широко использует jQuery.Не выполняйте остальную часть кода до загрузки внешнего скрипта
Проблема заключается в том, что мы сейчас начинаем отходить от jQuery в некоторых наших продуктах, но все равно нужно, чтобы этот букмарклер функционировал одинаково.
Итак, я хочу обновить букмарклет, чтобы он сначала проверил, существует ли jQuery на странице.
если jQuery, продолжение выполнение как обычно.
Если! JQuery, скачайте jQuery (AJAX), затем выполните оставшуюся часть скрипта.
Проблема в том, что я не уверен, как это сделать внутри IIFE. Поскольку выборка скрипта будет асинхронным действием, как я могу убедиться, что jQuery загружен и хорошо идти до продолжения скрипта? Это то, что я до сих пор ..
(function() {
var continueExec = true;
if (!window.jQuery) {
continueExec = false;
var s = document.createElement('script');
s.onload = function() {
continueExec = true;
};
s.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
document.head.appendChild(s);
}
// .. now I want to be able to use jQuery here. What do I need to change?
// $('.className')...
})()
отмечают, что, так как это bookmarket, он получает впрыскивается в страницу после загрузки/рендеринга, так что это не так просто, как поместить блок сценария JQuery выше головы ,
безупречный. Именно то, что я искал. Не знаю, почему я не думал подключать IIFE как обратный вызов. Отлично сработано! – Prefix