【问题标题】:Waiting jQuery to load if not already exist等待 jQuery 加载(如果不存在)
【发布时间】:2021-01-20 18:35:32
【问题描述】:

我正在使用 jQuery 创建一个 javascript 代码。但是,首先,我想:

  1. 测试页面中是否已经存在jQuery
  2. 如果没有则加载
  3. 加载我自己的 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


【解决方案1】:

来自@user2740650

这是因为您已插入脚本但尚未加载。当您尝试调用 jQuery 时,浏览器才开始加载它。尝试等待这个答案中的“加载”事件:stackoverflow.com/a/43076418/2740650

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多