为了账号安全,请及时绑定邮箱和手机立即绑定

我希望MAIN在页面所有script标签加载并且执行完毕后再加载,该怎么实现?

我希望MAIN在页面所有script标签加载并且执行完毕后再加载,该怎么实现?

犯罪嫌疑人X 2023-05-01 10:06:27
需求当前我开发了一个Javascript插件,它拥有两部分LOADER(用于加载MAIN和其他额外操作)和MAIN(插件主体),LOADER会在某个时刻(由用户的操作事件决定)加载,而我希望MAIN在页面所有script标签加载并且执行完毕后再加载。困境在常规思路中,使用window.onload可以在window加载后加载MAIN,然而,某些复杂页面本身可能已经存在插件,而MAIN应该在所有插件的script标签加载并且执行完毕后再加载。思路由于其他插件可能动态加载script插件。我当前的想法是在LOADER中获取所有script标签(document.getElementsByTagName('script')),然后判断它们是否都已经加载了,如果全部都加载了,则加载MAIN,如何没有全部完成加载,则setInterval等待。然而问题是,在IE中,script标签有readyState来判断script状态,而其他浏览器没有。虽然可以使用script.onload最为触发机制,但是在LOADER加载后,可能已经有些script已经加载,对于这些script标签,它们的onload事件永远不会触发,因此我们在这里并不知道未加载script的个数是多少,因此也不能确定MAIN该何时加载。
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

页面里的script都是顺序执行的,除非加了defer或async这种属性的异步script。
也无法去判断之前script的完成情况。

查看完整回答
反对 回复 2023-05-03
?
aluckdog

TA贡献1847条经验 获得超7个赞

不加 defer 或 async 的情况下,可以在 script 标签上加上 onload 属性

查看完整回答
反对 回复 2023-05-03
  • 2 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信