【问题标题】:Best and fast practice to reload an external javascript file?重新加载外部 javascript 文件的最佳和快速做法?
【发布时间】:2018-03-07 11:18:55
【问题描述】:

大家好,我有一个很大的疑问...... 在我的 javscript 代码中,我需要每 1 分钟重新加载一个 js 文件(其中有一个多维数组)。 要重新加载它,建议我使用ajax 或其他方式?

示例A

       try { 
          jQuery.ajax({             
            url: "http://www.fake.con/scripts/out/array/week-quakes.js",
            dataType: "script",
            cache: false
          });
        }
        catch(e){
            var aggiungi= '<span>there's error about server</span>';
            $(aggiungi).appendTo('#lista-eq');    
        }

示例B

$("head script[src='http://www.fake.con/scripts/out/array/week-quakes.js']").remove();


$('head').append('<script type="text/javascript" src="http://www.fake.con/scripts/out/array/week-quakes.js"><\/script>');   

这些代码在setInterval(function())里面

但是我的问题也是,当我 realod js 文件可能时它还没有准备好或不存在,那么我该如何解决这个问题?

我希望你能帮助我并提出好的建议:)

【问题讨论】:

    标签: javascript jquery ajax performance reload


    【解决方案1】:

    我会去做类似的事情。首先删除旧版本。然后用新元素创建一个新元素,并在 url 中添加某种“cachebuster”,这样它就不会重新加载缓存的版本。

    let loadJsScript = function(src) {
        let oldScript = $("script[src='" + src + "']"),
            script = document.createElement('script');
    
        oldScript && oldScript.remove();
    
        script.type = 'text/javascript';
        script.src = src
    
        $('head').append(script);
    }
    
    
    loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());
    

    要每分钟运行一次函数,你可以用 setInterval 函数包装它。

    setInterval(function(){ 
     loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());
    },60000)
    

    【讨论】:

    • 事实上我注意到有时会重新加载缓存的版本......但是你的代码对我来说有点困难(我不是好的程序员:P)你能说我是否可以输入“loadJsScript”事件 ready() 之外的变量,例如全局变量?非常感谢
    • @Borja 没有什么能阻止你让它成为全球性的。您甚至可以将其设为窗口对象属性,例如 window.loadJsScript 等...因此您可以在任何地方调用。但是如果您打算在页面加载之前使用它,您可以将脚本链接到 html 中,不是吗?
    • 最后一件事......在这种情况下我可以使用“var”还是只使用“let”?
    • @Borja 您可以使用其中任何一个,但请查看此以获取更多信息:stackoverflow.com/questions/762011/…
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多