连接document.ready事件:IE表现不同

时间:2011-11-22 05:57:23

标签: javascript jquery internet-explorer-8 document-ready

我习惯输入:$(function(){});语法来连接事件,并在document ready事件中执行其他操作。但是我注意到IE8在从一些包含的js文件中调用函数时遇到了问题。如果页面没有来自设计师的代码,我就不会破解它(他放了一些幻灯片:D)。幻灯片显示的代码使用旧的$(document).ready(function(){});语法,它正在运行。我删除了我的代码并将其与幻灯片初始化代码放在一起,事情开始起作用。

我无法理解这种奇怪的行为,但我想确保不再被这个bug所困扰。在ready事件触发后是否下载了包含的文件?

编辑:

<script src="jquery.js" type="text/javascript"></script>
<script src="custom.js" type="text/javascript"></script>

$(function(){
    myCustomFunction(); ///THIS IS CAUSING EXCEPTION IN IE 8
});


$(document).ready(function(){
    myCustomFunction(); ///THIS IS WORKS IN IE 8
});

2 个答案:

答案 0 :(得分:1)

就绪事件仅在所有包含的文件下载完成后触发,这就是它的用途。

之前我也遇到了类似的问题,但是由于我的脚本代码没有正确关闭,请看一下:How does $(document).ready() work in IE 8?

答案 1 :(得分:0)

问题可能是因为尚未加载JQuery,请尝试在$(document).ready代码之前运行以下代码进行测试:

if (jQuery) alert('jquery loaded')
else alert('jquery not loaded')

我们有类似的浏览器兼容性问题,不记得是否是IE8。它是由脚本标签'type'属性引起的。

我们有一些标记为'text / javascript'(the W3C recommendation),'application / javascript',还有一些没有type属性。 JQuery位于标题为“text / javascript”的标题的顶部,但最后仍然加载。

通过在所有脚本标记上放置相同的ContentType

,可以轻松解决该问题