两种JavaScript嵌入代码样式之间的区别?

时间:2017-08-10 09:59:07

标签: javascript embedding

这是我的第一个问题,我希望我做得对。到目前为止找不到任何解决方案,已经问了我的一些编码朋友,还没有足够的答案。在这里:

我正在优化我的辅助项目SaaS,这取决于用户将JavaScript嵌入代码复制/粘贴到他们的网站中。很像Google Analytics或Twitter要求您这样做。

在研究其他人如何做到这一点时,我总是看到以下两种方法中的一种,我真的很想知道它们之间有什么区别。

编辑以澄清:两个加载的脚本都位于外部服务器上。

方法1:“标准嵌入脚本”,如:

<blockquote id="container">Hello!</blockquote>
<script src="//some.saas.tld/widget.js"></script>

这是Twitter使用的,它似乎只是加载脚本然后修改<blockquote>元素

方法2:“黑客攻击嵌入脚本”就像那样:

<script> 
  var a = document.createElement('script'); 
  a.src = '//some.saas.tld/widget.js'; 
  parentNode.insertBefore(a); 
</script>

(这是非常基本的,以显示我的意思是什么样的嵌入 - 它将无法工作,并且blockquote不在此,因为这不是重点)。 例如,谷歌分析就是这样做的。

问题是:为什么有些服务使用第一种方法,为什么有些服务使用第二种方法?对我来说,似乎它创造了相同的结果。什么是PRO / CON?

我问,因为一旦用户在网站代码中运行嵌入代码,就很难让用户更改嵌入代码。所以从一开始就把它弄好是很重要的。

谢谢!

1 个答案:

答案 0 :(得分:1)

第一次加载呼叫基本上是同步呼叫。如果未完成,则不允许加载或执行下一个脚本。

然而,第二个手动脚本加载是异步的。即使脚本没有完全加载,它也允许执行和加载其他脚本。

有一篇好文章详细解释了这种行为 - 查看链接 - https://trevweb.me.uk/javascripthtml-synchronous-and-asynchronous-loading/