javascript 代码的这两个片段有什么区别?
What is the difference between these two snippets of javascript code?
我知道他们或多或少做同样的事情,只是方法不同而已。
<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 程序员,因此非常感谢您的帮助。
在第一个示例中,第二个 <script>
标记只会在 example.js
完成加载后执行。
在第二个示例中,加载 example.js
的 <script>
标签是动态创建的并插入到文档中(以不必要的迂回方式,如果我可以添加我自己的两分钱的话),并且它将开始异步加载,即它不会延迟任何 <script>
标签的执行。这样可以达到同样的效果:
<script src="example.js" async></script>
<script>
function OptanonWrapper() { }
</script>
阅读 MDN 上的 <script>
元素了解更多详情:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
我知道他们或多或少做同样的事情,只是方法不同而已。
<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 程序员,因此非常感谢您的帮助。
在第一个示例中,第二个 <script>
标记只会在 example.js
完成加载后执行。
在第二个示例中,加载 example.js
的 <script>
标签是动态创建的并插入到文档中(以不必要的迂回方式,如果我可以添加我自己的两分钱的话),并且它将开始异步加载,即它不会延迟任何 <script>
标签的执行。这样可以达到同样的效果:
<script src="example.js" async></script>
<script>
function OptanonWrapper() { }
</script>
阅读 MDN 上的 <script>
元素了解更多详情:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script