【发布时间】:2021-01-20 18:35:32
【问题描述】:
我正在使用 jQuery 创建一个 javascript 代码。但是,首先,我想:
- 测试页面中是否已经存在jQuery
- 如果没有则加载
- 加载我自己的 jQuery 插件
我已经写了这个小代码,但是我在start() 函数中有一个错误:
jQuery 没有定义
我的代码将在一个 js 文件中:
window.addEventListener('DOMContentLoaded', function(){
if (!window.jQuery) {
loadjQuery(onScriptLoad);
}else{
start();
}
});
function onScriptLoad() {
console.log('jQuery is load !');
start();
}
function loadjQuery(callback)
{
//Get jQuery
var script = document.createElement('script');
script.type = "text/javascript";
script.src = "https://code.jquery.com/jquery-1.12.4.min.js";
script.integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=";
script.crossorigin = "anonymous";
document.getElementsByTagName('head')[0].appendChild(script);
callback();
}
function start(){
(function( $ ) {
// Plugin definition.
$.fn.transliveasy = function( options ) {
debug( this );
// ...
};
// Private function for debugging.
function debug( obj ) {
if ( window.console && window.console.log ) {
window.console.log( "Debug : ", obj );
}
}
})( jQuery );
console.log('I am load !');
}
【问题讨论】:
-
这是因为你已经插入了脚本,但它还没有加载。当您尝试调用 jQuery 时,浏览器才开始加载它。尝试等待这个答案中的“加载”事件:stackoverflow.com/a/43076418/2740650
-
您可以尝试使用
script.onload = callback,但我不能 100% 确定它是否有效。如果不是,我可以添加延迟 + setTimeout 的答案,如果您希望它始终有效。
标签: jquery