1
我正在研究一个小书签脚本(一个大IIFE)。该脚本以前为包含jQuery的页面创建,并广泛使用jQuery。在外部脚本加载之前,不要执行其余代码
问题是我们现在开始从我们的某些产品中的jQuery中移开,但仍需要这个书签以相同的方式工作。
因此,我想更新bookmarklet,以便它首先检查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