gpt4 book ai didi

javascript - 为什么 jQuery UI 看不到 jQuery?

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:19 25 4
gpt4 key购买 nike

我构建了一个 JavaScript 小部件,它必须可嵌入任何环境中的任何第三方站点。该小部件依赖于 jQuery 和 jQuery UI。我按照 How to embed Javascript widget that depends on jQuery into an unknown environment 中的步骤操作以负责任的方式添加 jQuery——非常适合嵌入 jQuery。但是当我尝试添加 jQuery UI 时,它失败了。这是代码:

(function(window, document, version, callback) {
var j, d;
var loaded = false;
if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js";
script.onload = script.onreadystatechange = function() {
if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
callback((j = window.jQuery).noConflict(1), loaded = true);
j(script).remove();
}
};
document.documentElement.childNodes[0].appendChild(script)
}
})(window, document, "1.3.2", function($, jquery_loaded) {
$.getScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js', function(){
console.log('loaded');
});
});

当我运行它时,我收到“已加载”消息,然后在 jquery-ui.js 的第 15 行出现一个错误,指出“$ is undefined”。但是,当我使用 $.getScript() 加载 jQuery UI 时,$ 怎么会是未定义的呢?为什么我在收到错误消息之前会看到“已加载”消息?根据 jQuery 文档,在加载并执行脚本之前,getScript 不应执行回调。

有什么方法可以使用这个框架来包含 jQuery UI,或者我是否需要使用像 RequireJS 这样的脚本加载器来加载所有内容、强制执行依赖关系等?

最佳答案

通过调用 .noConflict(1),与 .noConflict(true) 相同,您正在删除 jQuery,只需删除 1.noConflict()true 参数告诉 jQuery 不仅要删除 $,还要删除 window.jQuery,当 加载时,jQuery UI 之后会尝试使用它。

You can test it here ,查看控制台没有报错。

关于javascript - 为什么 jQuery UI 看不到 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com