javascript包含2次相同的外部js

Posted

技术标签:

【中文标题】javascript包含2次相同的外部js【英文标题】:javascript include 2 times the same external js 【发布时间】:2014-03-26 00:10:00 【问题描述】:

我在命令中包含 jquery 外部 js 文件:

<script type='text/javascript' src='js/jquery-1.11.0.js' ></script>

我将在下面的同一页面中再次调用它(这是因为我将它包含在 php 类中以确保在继续之前加载它)。所以在页面中,我会在不同的地方有2倍的行:

<script type='text/javascript' src='js/jquery-1.11.0.js' ></script>

我想知道这是否会在我的页面中产生问题,以及脚本 jquery 是否会被加载 2 次,这将是无效的。

谢谢,

约翰。

【问题讨论】:

除了生成下载数据的开销之外,在第二次加载脚本之前包含 jQuery 插件可能会导致问题(因为这将再次覆盖插件)。第一次真的需要包含 jQuery 吗? 可能重复***.com/questions/4891278/… 【参考方案1】:

这将为包含在这两个包含之间的任何插件产生问题。例如,如果您有:

<script type='text/javascript' src='js/jquery-1.11.0.js' ></script>
<script type='text/javascript' src='js/jquery-plugin.js' ></script>
<script type='text/javascript' src='js/jquery-1.11.0.js' ></script>

jquery-plugin.js 将被覆盖,它不会工作。

【讨论】:

【参考方案2】:

它将被包含两次。没有必要这样做。如果您绝对必须在两个地方编写包含标签,请有条件地进行第二次。下面的代码将仅包含尚未包含的 jQuery。

<script>
    window.jQuery || document.write('<script src="js/jquery-1.11.0.js"><\/script>')
</script>

【讨论】:

【参考方案3】:

应该没问题,尤其是在现代浏览器中,但是这样做有点奇怪。

如果您在第一个脚本标记之后加载 jQuery 插件,这些将不再起作用,因为 jQuery/$ 已重新初始化。

不过,我想不出你需要加载两次的任何理由 - 你确定需要这样做吗?最好的办法是将脚本标记放在页面底部,然后关闭&lt;body&gt; 标记。

【讨论】:

【参考方案4】:

根据库,多次包含它可能会产生不良影响。

可以这样想,如果您有一个将单击事件绑定到按钮的脚本,并且您将该脚本包含两次,那么当单击该按钮时,这些操作将运行两次。

您可以编写一个简单的函数,调用该函数来加载脚本并让它跟踪已加载的文件。或者,我敢肯定您可能会使用预先存在的 JS 加载器(例如 LabJS)并对其进行修改。


参考:What is the danger in including the same JavaScript library twice

【讨论】:

以上是关于javascript包含2次相同的外部js的主要内容,如果未能解决你的问题,请参考以下文章

JSJAVA刷题和C刷题的一个很重要的区别

JavaScript Javascript包含带外部文件的菜单

包含外部文件的Javascript包含菜单

props 被两次添加到在 React / Javascript 中的组件外部声明的数组变量中

如何在不增加 http 请求的情况下包含多个外部 javascript 文件

Javascript外部对象