appendChild的script标签是异步执行的吗?

clipboard.png
用上图的方式使用没有问题

clipboard.png
但是用append标签的方式就会报错,initNECaptcha undefined。

append的script标签是异步执行的?

阅读 5.9k
1 个回答

首先回答你的问题,append的script标签是异步执行的? 答案是看情况,可以异步,默认同步。 但是从你的代码中看是同步。

那么为什么同步会造成你的“异步的”错觉呢?

原因在于浏览器请求下载js这个网络IO操作是异步的。 代码下载完成,返回到浏览器的时候,不加异步属性的话,就会阻塞浏览器渲染同步执行。刚才说了请求下载js这个网络IO操作是异步的,因此代码再去请求下载js文件的时候,你的初始化代码已经执行了,那么很显然代码会报错。

因此要想解决你的问题,你需要将初始化代码写到script的onLoad事件中去。

希望我的回答对你有帮助。 我的个人主页是https://azl397985856.github.io/ , 掘金主页 https://juejin.im/user/58af98...  

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题