javascript - 为什么调用 $.getScript 而不是直接使用 <script> 标签?

标签 javascript jquery script-tag getscript

我不明白替换它的原因:

<script src="js/example.js"></script>

用这个:

$.getScript('js/example.js', function() {
  alert('Load was performed.');
});

是否有使用 jQuery 版本的特殊原因?

最佳答案

我能想到的唯一原因是你在加载脚本时得到了回调。但是你也可以使用 script 标签,通过使用 load 事件(或者在非常老的 IE 上,onreadystatechange)来获得回调。

相比之下,这样做有几个负面因素,尤其是 getScript 受制于 Same Origin Policy ,而 script 标签不是。

即使您需要动态加载脚本(并且有多种原因可能需要这样做),坦率地说,除非您真的需要回调,否则我认为您最好通过添加脚本标签:

$('head:first').append("<script type='text/javascript' src='js/examplejs'><\/script>");

(注意:您需要在上面的结束标记中使用其他不必要的 \ 以避免过早结束此代码所在的脚本标记,如果它位于内联脚本标记中。)

以这种方式添加的

script 标签不受同源策略的约束。如果你想要 load 回调,那么:

$("<script type='text/javascript' src='js/examplejs'><\/script>")
    .on("load", function() {
        // loaded
    })
    .appendTo('head:first');

(正如我所说,对于非常古老的 IE,您要做的不止于此,但现在您不应该需要处理它们。)

关于javascript - 为什么调用 $.getScript 而不是直接使用 &lt;script&gt; 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392884/

相关文章:

javascript - 如何在浏览器关闭时注销用户

php - MYSQL Select 基于 HTML 选择选项

javascript - 同步表调整大小

javascript - 尝试在 React 组件中运行 Ko-Fi 小部件。在 DIV 中运行 &lt;script&gt; 命令

javascript - 禁用 jQuery 窗口大小功能

javascript - 如何使用 jQuery 将动画添加到条形图?

javascript - 我如何将此信息发送到不同页面上的另一个文本区域?

javascript - 我怎样才能对内部函数中的变量进行任何更改以影响主变量值

javascript - 为什么 Chrome 会自动删除脚本标签?

reactjs - 在特定的 React 组件中实现 Bing 自定义搜索 HostedUI 脚本元素