我习惯输入:$(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
});
答案 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
,可以轻松解决该问题