Javascript异步加载和执行顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript异步加载和执行顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1439字,纯文字阅读大概需要3分钟。
内容图文
![Javascript异步加载和执行顺序](/upload/InfoBanner/zyjiaocheng/769/f0f635738250415cb5cce32324052597.jpg)
我正在寻找有关浏览器如何执行与页面其余部分相关的异步样式脚本的更多信息.
我有一个遵循异步加载模式的JS脚本,如下所示:
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://yourdomain.com/script.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
我知道这是一个非阻塞下载,并且在下载时页面将继续加载.到现在为止还挺好.现在让我们稍后说明我声明了一些变量:
var x = "something";
我的问题是,这个变量是否可用于我之前加载的脚本?如果我做了
alert(x);
在上面加载的脚本中,它似乎工作,但我不确定它将永远是这样的.还有DOM元素呢?如果页面中稍后有一些div:
<div id="myDiv"></div>
在我的剧本中我做到了
var div = document.getElementById("myDiv");
这会正常吗?在我的测试中,这些东西似乎有效,但我不确定是否有更多的页面内容,它们是否可以被异步脚本看到.
所以我的问题可以基本上缩小到,从异步加载的脚本访问项目而不检查一些DOM加载的事件是否安全?
解决方法:
>通过添加< script>将async设置为true,然后在< script>中声明变量降低啄食顺序,这是一个竞争条件,变量是否在第一个可用.
如果第一个<脚本>缓存,或者如果执行第二个< script>延迟(即第一个/第二个之间的元素是同步的,加载缓慢的)你将最终得到未定义的变量.
>您可以保证< script>将执行不早于它在DOM中的位置.如果< div>位于< script>之前,它始终可用.否则拉吸管.
在这两种情况下,您可以在事件处理程序中包含脚本中包含的JavaScript代码,这些事件处理程序正在侦听诸如window.onload或DOMContentLoaded事件之类的事件,以延迟执行直到这些事件被触发(并且所有< scripts>将存在)并纠正).
内容总结
以上是互联网集市为您收集整理的Javascript异步加载和执行顺序全部内容,希望文章能够帮你解决Javascript异步加载和执行顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。