我的网站上有某些页面加载了大量的javascript文件。在下面的代码中,edit_onload()位于script1.js中。通常,所有脚本都可以正常加载,并且edit_onload会成功触发。有时它似乎就像script1.js没有及时加载,因为edit_onload()错误与对象预期。如果刷新页面,一切都会正常加载。
我的问题是,下面的标签是否应该等待加载所有.js文件然后执行edit_onload()?
<script LANGUAGE="javascript" DEFER="true" for="window" event="onload">
<xsl:comment>
<![CDATA[
edit_onload();
]]>
</xsl:comment>
</script>
<script language="javascript" src="/_scripts/script1.js" defer="true"></script>
<script language="javascript" src="/_scripts/script2.js" defer="true"></script>
<script language="javascript" src="/_scripts/script3.js" defer="true"></script>
答案 0 :(得分:0)
我认为,处理延迟脚本的实现是特定于浏览器的。例如,他们可以处理不同队列中的内联和外部脚本。通常,“延迟”属性只是网站开发人员为用户代理提供的建议,但用户代理不一定遵守建议。
你也应该尝试使用'defer =“defer”'。你可以将调用移到script1.js本身吗?您还可以定期检查移动到正在加载的内容末尾的特定元素的存在,并仅在发现该元素后运行该方法。
顺便说一下,如果使用dynamic script loading比喻,你可能会获得对脚本加载的更多控制权(链接只是其中一个例子)。