2015-06-21 49 views
0

我想加载我的JavaScript文件后加载页面,并确保它们正在缓存。动态加载JavaScript文件,并确保它们被缓存

这个问题已经被问及很多回答,但他们都建议加载jQuery($.getScript),而我想加载的文件之一是jQuery本身,我不能使用jQuery。有一些选项,如:

(function(){ 
    var newscript = document.createElement('script'); 
    newscript.type = 'text/javascript'; 
    newscript.async = false; //as I'm going to execute some functions 
           //after this I want to make sure that the 
           //script is fully loaded 
    newscript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'; 
    (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(newscript); 
})(); 

但我不知道他们是否缓存或不。 和有动态加载脚本完成时触发事件的方法?

+0

你为什么这么做? – Ryan

+0

我只有一个JavaScript文件,因为我正在使用捆绑和缩小。但由于JavaScript的大小是大的,我不希望它的加载时间加载到页面加载时间 –

+0

因此,你会......仍然通过加载它的同时加载它的加载时间到页面的加载时间? (我甚至不知道设置'async = false'是否可以使它同步,但是如果是这样的话,那看起来好像会击败那个点。) – Ryan

回答

1

您可以通过打开浏览器开发工具的网络选项卡第二次加载您的页面,从而轻松检查它们是否被缓存。您可以通过加载脚本的方式来判断文件是否被缓存。顺便说一下,他们应该是。你基本上是通过JavaScript插入一个脚本标签,然后加载脚本,就像标签已经在页面中一样。

如果你让异步加载,你可以在onload事件附加到一个脚本标签,这将尽快加载脚本触发。这应该适用于任何现代浏览器,包括标准模式下的IE9 +。如果你需要IE8的支持,你将不得不做一些额外的工作,这也是$.getScript()也是。在'onload' handler for script tag in Internet Explorer这个问题中可以找到关于这个jQuery功能的深入讨论,以及其他代码片段。

+0

和我我设置异步到ture,有没有办法加载完成后触发事件? –

+1

请看看[这个问题](http://stackoverflow.com/questions/4845762/onload-handler-for-script-tag-in-internet-explorer)。答案提供了jQuery的改变代码,它提供了这个onload事件,比如'.getScript()'。 – GolezTrol

+0

太好了,非常感谢 –

相关问题