需求
当前我开发了一个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
该何时加载。