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表单的三个原因:

  • 您希望所有脚本声明都位于文档顶部,但您也知道,将脚本声明放置在文档顶部会迫使浏览器在继续页面呈现过程之前下载它们的全部内容。这会带来可测量的延迟。jQuery表单将安排脚本加载,直到文档下载完成,类似于将所有
    标记放在文档末尾的效果,只是没有语法上的奇怪
  • 机制不适用于不存在于HTML文档本身中的脚本;也就是说,如果包含在
    页面上的脚本想要加载脚本,那么它别无选择,只能使用基于JavaScript的方法,例如调用jQuery函数
  • 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');