这是我的第一个问题,我希望我做得对。到目前为止找不到任何解决方案,已经问了我的一些编码朋友,还没有足够的答案。在这里:
我正在优化我的辅助项目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?
我问,因为一旦用户在网站代码中运行嵌入代码,就很难让用户更改嵌入代码。所以从一开始就把它弄好是很重要的。
谢谢!
答案 0 :(得分:1)
第一次加载呼叫基本上是同步呼叫。如果未完成,则不允许加载或执行下一个脚本。
然而,第二个手动脚本加载是异步的。即使脚本没有完全加载,它也允许执行和加载其他脚本。
有一篇好文章详细解释了这种行为 - 查看链接 - https://trevweb.me.uk/javascripthtml-synchronous-and-asynchronous-loading/