Javascript 为什么要调用$.getScript而不是使用<;脚本>;直接标记?
我不明白更换这个的原因:Javascript 为什么要调用$.getScript而不是使用<;脚本>;直接标记?,javascript,jquery,script-tag,getscript,Javascript,Jquery,Script Tag,Getscript,我不明白更换这个的原因: <script src="js/example.js"></script> 使用jQuery版本有什么特别的原因吗?不需要这样做 如果希望动态加载脚本(在需要时,而不是从一开始就加载脚本),可以这样做。我能想到的唯一原因是,在加载脚本时,您会得到回调。但是您也可以使用脚本标记,通过加载事件(或者在非常旧的IE上,onreadystatechange)获得回调 相比之下,这样做有几个缺点,尤其是getScript受限制,而script标记不受限制
<script src="js/example.js"></script>
使用jQuery版本有什么特别的原因吗?不需要这样做
如果希望动态加载脚本(在需要时,而不是从一开始就加载脚本),可以这样做。我能想到的唯一原因是,在加载脚本时,您会得到回调。但是您也可以使用
脚本
标记,通过加载
事件(或者在非常旧的IE上,onreadystatechange
)获得回调
相比之下,这样做有几个缺点,尤其是getScript
受限制,而script
标记不受限制
即使您需要动态加载脚本(您可能需要这样做有几个原因),坦率地说,除非您真的需要回调,否则最好通过添加script
标记来加载脚本:
$('head:first').append("<script type='text/javascript' src='js/examplejs'><\/script>");
(正如我所说,对于非常旧的IE,你需要做的不仅仅是这些,但现在你不需要处理它们。)脚本可能依赖于jQuery,因此如果浏览器没有加载jQuery,这将是一种防止浏览器尝试加载它的方法
jQuery无法加载的原因有很多,从简单的网络故障到CDN没有被用户列入白名单 我可以想到使用jQuery表单的三个原因:
标记放在文档末尾的效果,只是没有语法上的奇怪
机制不适用于不存在于HTML文档本身中的脚本;也就是说,如果包含在
页面上的脚本想要加载脚本,那么它别无选择,只能使用基于JavaScript的方法,例如调用jQuery函数也许是为了控制脚本加载的时间?在大量使用javascript的页面上,可能需要等待加载一些非必需的内容,直到加载了必需的内容。回答得不错,尽管#1和#2都是动态加载脚本的参数,而不是
getScript
,具体来说就是(正如我所指出的)受限于script
标记不可用的限制。@T.J.:注意。我不是在提倡使用$.getScript()
而不是任何其他特定的基于脚本的方法,只是指出了为什么可以使用它而不是
+由于指出了同源策略的差异,我向您的答案添加了1。由于jQuery 1.2,您可以使用$.getScript动态加载跨域脚本。资料来源:
$('head:first').append("<script type='text/javascript' src='js/examplejs'><\/script>");
$("<script type='text/javascript' src='js/examplejs'><\/script>")
.on("load", function() {
// loaded
})
.appendTo('head:first');