0

我的网站上有某些页面加载了大量的 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>
4

1 回答 1

0

我认为,延迟脚本处理的实现是特定于浏览器的。例如,它们可以处理不同队列中的内联和外部脚本。一般来说,“defer”属性只是站点开发人员为用户代理提供的建议,但用户代理不一定会遵守该建议。

你也应该尝试使用'defer="defer"'。您可以将调用移至 script1.js 本身吗?您还可以定期检查移动到正在加载的内容末尾的特定元素的存在,并仅在发现元素后运行该方法。

顺便说一句,如果您使用动态脚本加载隐喻,您可能会获得对脚本加载的更多控制(链接只是示例之一)。

于 2012-05-31T19:05:25.643 回答