【问题标题】:What is the difference between these two snippets of javascript code?这两个javascript代码片段有什么区别?
【发布时间】:2018-05-23 08:48:58
【问题描述】:

我知道他们或多或少都在做同样的事情,只是方法而已。

<script src="example.js" type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript">
function OptanonWrapper() { }
</script>

<script type="text/javascript">

var x = x || [];
  (function(){
        setTimeout(function(){
      var d = document, f = d.getElementsByTagName('script')[0], s = d.createElement('script'); s.type = 'text/javascript';

      s.async = true; s.src = "example.js"; f.parentNode.insertBefore(s,f);

    }, 1);

  })();

</script>

--

我不是本地 js 程序员,因此我们将不胜感激。

【问题讨论】:

  • 呃。他们完全不同……?除非外部 example.js 有一些你没有包含的代码。
  • @evolutionxbox - example.js 没有不同的代码。它们到底有什么不同?再次抱歉,我不是 js 程序员,所以我不知道。我的理解是两者都从 example.js 获取 js
  • 第一个字面上什么都不做,如果示例 js 是空的。第二个实质上是创建一个带有指向 example.js 的链接的脚本标记。 --- 与我的第一条评论相反,它也没有任何作用。

标签: javascript compare review


【解决方案1】:

在第一个示例中,第二个&lt;script&gt; 标签只会在example.js 完成加载后执行。

在第二个示例中,加载example.js&lt;script&gt; 标记是动态创建并插入到文档中的(以一种不必要的迂回方式,如果我可以添加我自己的两分钱的话),它将开始异步加载,即它不会延迟任何&lt;script&gt; 标签的执行。这样也可以达到同样的效果:

<script src="example.js" async></script>
<script>
    function OptanonWrapper() { }
</script>

阅读 MDN 上的 &lt;script&gt; 元素了解更多详情:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

【讨论】:

  • 感谢您的回答。是的,它确实遇到了非常不必要的迂回,但它是为谷歌标签管理器设计的。最初我确实创建了一个像你这样的脚本,因为它是最简单的方法。但在 GTM 中,无论出于何种原因,它都不起作用。我不知道为什么,但我在网上找到了第二个在 GTM 中工作的例子。这就是为什么我想知道两者之间的区别是什么。
猜你喜欢
  • 2021-01-06
  • 2021-12-17
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多