[英]Good practice method for loading JavaScript via ajax
免责声明:我对AJAX很新!
我环顾四周,我不确定使用ajax加载javascript的方法。
我正在使用ajax来请求每个都需要6-10个简短方法的页面。 总共可能有5-6个这样的页面,因此总共大约有35种以上的方法。
我更愿意访问需要加载的每个页面所需的javascript。
我见过几种方法,我不确定哪种方法最符合我的需要:
在头部包含一个空脚本元素,并通过操作src属性。 DOM。
通过创建一个新的脚本元素。 DOM并将其附加到document.body(这听起来与#1相同)。
由于我是ajax和web开发的新手,我很好奇每种方法的起伏,以及我错过的任何方法。
一些问题是: - 是否会使用缓存副本,或者每次发出ajax请求时脚本都会下载。 请注意,脚本将是静态的。 - 浏览器兼容性。 我使用Chrome,但此应用程序将用于IE> = 7以及Firefox的各个版本。
在jQuery环境中,我使用getscript()
。 你对这个缓存感到好奇 - getscript
包含一个缓存破坏功能(主要用于破坏激进的IE缓存,虽然当然在其他场景中很有用)。 你可以执行相当于非缓存破坏的getscript
如下所示:
$.ajax({
cache: true,
dataType: "script",
url: "your_js_file.js",
success: yourFunction
});
正如所有其他答案在这里只是说“使用jquery”而没有任何进一步的信息/解释/理由,它可能值得看看你提到的其他选项。
可能有点复杂,因为它要求你等到一个脚本下载并运行之后才能获取下一个脚本(因为你只有一个脚本元素)。
更好,因为您可以在第一个脚本元素完成下载之前将第二个脚本元素附加到DOM,而不会影响下载/执行。
在我之前的每个人推荐,如果你在jQuery环境中并且已经加载了(非常重)jQuery库用于其他用途,那就很好了 - 单独加载它显然是多余的。 值得注意的是, $.getScript()
和$.ajax()
都使用eval()
来执行脚本。 eval()
在这种情况下不是“邪恶的”,因为它是一个受信任的来源,但根据我的经验,在调试eval()代码时偶尔会有点困难。
是不可能的afaik。
Nick Craver在第一个OP评论中推荐的是我要用的东西 - 如果脚本是静态的,如你所说,缓存将比多个HTTP请求更有效。 如果您特别关注带宽,还可以考虑使用cache.manifest进行积极的缓存: http ://www.html5rocks.com/tutorials/appcache/beginner/
使用getScript
。 它基本上与第二种方法做同样的事情,但你不必担心如何在各种浏览器(主要是IE)中监听负载。
就DOM而言,AJAX响应只是文本。 除非您以某种方式将其插入DOM,否则它无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.