Too*_*awe 7 javascript jquery script-tag getscript
我不明白替换这个的原因:
<script src="js/example.js"></script>
Run Code Online (Sandbox Code Playgroud)
有了这个:
$.getScript('js/example.js', function() {
alert('Load was performed.');
});
Run Code Online (Sandbox Code Playgroud)
有没有特别的理由使用jQuery版本?
我能想到的唯一原因是你在加载脚本时得到了回调.但是你也可以script通过使用load事件(或者在真正的旧IE上onreadystatechange)使用标签来获得回调.
相比之下,这样做有几个负面因素,尤其getScript是受同源策略约束,而script标签则不然.
即使您需要动态加载脚本(并且有几个原因可能需要这样做),坦白说除非您确实需要回调,否则我会说您最好通过添加script标记来加载脚本:
$('head:first').append("<script type='text/javascript' src='js/examplejs'><\/script>");
Run Code Online (Sandbox Code Playgroud)
(注意:您需要\在上面的结束标记中使用否则不必要,以避免过早结束此代码存在的脚本标记,如果它在内联脚本标记中.)
script以这种方式添加的标签是不受制于同源策略.如果你想要load回调,那么:
$("<script type='text/javascript' src='js/examplejs'><\/script>")
.on("load", function() {
// loaded
})
.appendTo('head:first');
Run Code Online (Sandbox Code Playgroud)
(正如我所说,对于非常古老的IE,你必须做更多的事情,但这些天你不需要处理它们.)
我可以想到你可能使用jQuery表单的三个原因:
<script>标记放在文档末尾的效果,只是没有语法怪异.<script>机制不适用于不在HTML文档本身中的脚本; 也就是说,如果页面上包含<script>要加载脚本的脚本,则除了使用基于JavaScript的方法(例如调用jQuery函数)之外别无选择.