javascript - 等待 jQuery 在 Wordpress 中加载
问题描述
Wordpress 会自动加载 jQuery。我想使用它,但我得到:
jQuery 未定义
这是因为各种插件弄乱了脚本的顺序。所以不能保证我的脚本会在加载 jQuery 之后加载。因此,如果它之前加载,我会收到该错误。
我可以将我的脚本包装在等待 jQuery 加载的东西中,然后执行我的脚本吗?
笔记
- 我不想手动加载 jQuery,因为那样我会破坏各种插件......我必须让 Wordpress 像往常一样加载它
- 我不是 PHP 人,所以我不想破解主题......我只想将我的脚本包装在跨浏览器的“jquery 等待脚本”中
解决方案
中的所有函数都window.deferAfterjQueryLoaded
将在jQuery
定义后运行,因此如果您将所有初始化都推入,window.deferAfterjQueryLoaded
您可以确保它们将在之后运行jQuery
<script>
if (!window.deferAfterjQueryLoaded) {
window.deferAfterjQueryLoaded = [];
//delete Object.defineProperty; //add this if you want to check the support
if (typeof (Object.defineProperty) === "function") {
Object.defineProperty(window, "jQuery", {
set: function (value) {
window.setTimeout(function () {
$.each(window.deferAfterjQueryLoaded, function (index, fn) {
fn();
});
}, 0);
Object.defineProperty(window, "jQuery", {value: value});
},
configurable: true
});
} else {
nIntervId = window.setInterval(function () {
if (typeof (jQuery) !== "undefined") {
$.each(window.deferAfterjQueryLoaded, function (index, fn) {
fn();
});
clearInterval(nIntervId);
}
}, 10);
}
}
window.deferAfterjQueryLoaded.push(function () {
(function ($) {
console.log("After jquery is loaded");
})(jQuery);
});
</script>
<script>
window.deferAfterjQueryLoaded.push(function () {
(function ($) {
console.log("After jquery is do something else");
})(jQuery);
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
您可以阅读更多关于 Object.defineProperty的内容,您可以在此处查看跨浏览器支持
推荐阅读
- angular - 效果只需在 Rxjs 6 中使用两个 Observable 调用一次
- r - 查找向量中的元素序列
- c - 在 C 中反转 2 的幂的最快方法是什么?
- swift - 如何根据信标的接近程度刷新背景图像?
- python-docx - 通过python在docx.zip的word文件夹中创建footer.xml文件,在word docx中创建页脚?
- ms-access - 用于添加新表行并分配主键的表单按钮
- rest - 进行查询 REST put 的问题,elasticsearch
- python - 用另一个字符串列表减去字符串列表
- angular - RxJS:catchError 返回联合类型
- javascript - 单击相同的选中单选按钮时如何清除单选按钮组中选中的单选按钮