javascript - 这两个javascript代码片段有什么区别?
问题描述
我知道他们或多或少都在做同样的事情,这只是其完成方式的方法。
<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
加载完成后执行。
在第二个例子中,<script>
加载的标签example.js
是动态创建并插入到文档中的(以一种不必要的迂回方式,如果我可以添加我自己的两分钱的话),它将开始异步加载,即它不会延迟任何执行<script>
后面的标签。这样可以达到同样的效果:
<script src="example.js" async></script>
<script>
function OptanonWrapper() { }
</script>
<script>
阅读MDN上的元素以获取更多详细信息:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
推荐阅读
- javascript - 有没有办法让 superfish 插件与菜单的高度相同?
- javascript - 为 react/phonegap 应用程序存储视频剪辑
- c++ - 如何根据对象是否为右值引用路由到不同的实现?
- c# - 如何使用 html 中的 AJAX 通过另一个动作向一个动作发送请求?
- python - 有条件地在数据框中填充一个值
- angular - 如果验证失败,如何停止 Metronic 向导
- ios - Xcode 10 应用程序上传“协商连接……”
- unit-testing - 添加新数据后如何知道elasticsearch何时准备好进行查询?
- jquery - 根据 currentdate 在 flatpicker 上更改 mintime
- intellij-idea - Intellij 修复检测到的警告 - svn:警告:W155010