当在我的html脚本标签上使用async ='true'来加载socket.io.js时,会导致io对象的一个未定义的错误任何build议?
将async ='true'作为内联属性添加到html脚本标记以asynchronous提供我的socket.io.js文件时,会在尝试连接到服务器时导致io对象出现未定义的错误。 我通过在head标签中加载我的socket.io来修正这个90%的时间,但是加载最后连接的js文件,但是我宁愿不松散10%的客户,谁都知道如何解决这个问题? 我已经试过在文档加载后连接,就像保持未定义一样。 确保套接字的唯一方法是以100%的概率连接,从脚本标记中删除async ='true'内联属性。 任何build议?
如果要asynchronous加载socket.io
,则需要defer
依赖它的脚本,并确保它们位于HTML中的socket.io
脚本之下:
<!DOCTYPE html> <html> <head> ... <script async="true" src="js/socket.io.js"></script> ... </head> <body> ... <script async="true" defer="true" src="js/main.js"></script> </body> </html>
添加defer
确保在asynchronous加载的<script>
,它将按照它存在于HTML中的顺序执行。 当然,如果不支持defer
,那么也不会支持async
,所以它仍然会以正确的顺序加载,只是socket.io.js
会阻止渲染,直到它被加载。