【问题标题】:javascript include 2 times the same external jsjavascript包含2次相同的外部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 吗?

标签: javascript


【解决方案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

        【讨论】:

          猜你喜欢
          • 2015-09-14
          • 1970-01-01
          • 2017-10-21
          • 2019-05-14
          • 1970-01-01
          • 2016-05-05
          • 2019-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多