我有一个在Firefox中完美运行的页面,但在IE中引发错误.我正在动态加载jQuery(如果它尚未加载),然后在jQuery(document).ready()块中执行一些操作.但是,IE在遇到jQuery(document).ready()块时会抛出可怕的"Object expected"错误.
您可以在此处查看完整页面代码:http://www.pastie.org/977767
IE正在jQuery(文档).ready()中抛出错误.
关于这里发生了什么的任何想法?同样,这在Firefox中运行得非常好.看起来几乎就像IE认为jQuery被加载但是它真的还没有,或者当遇到jQuery(document).ready()块时jQuery仍在加载?
当您将脚本附加到文档时,它将异步下载。在 IE 中,以下脚本...
try{
jQuery(document).ready(function() {
jQuery.getScript("/CalendarViewer/js/utils.js", function(){
jQuery.getScript("/CalendarViewer/js/groupcatselector.js", function(){
jQuery.getScript("/CalendarViewer/js/calendarportlet.js", function(){
jQuery.getScript("/CalendarViewer/js/calendarportletmain.js", function(){
var cpm = calendarportletmain;
cpm.doEditDefaults("V_7f208bca412b42a68c19eb104bf46f14", "/CalendarViewer", groupCats_V_7f208bca412b42a68c19eb104bf46f14);
});
});
});
});
});
}catch(err){
alert("error in view.jsp="+err.number+" "+err.description);
}
Run Code Online (Sandbox Code Playgroud)
...在 IE 完成下载和解析 jQuery 脚本之前解析并执行。在 Firefox 中可能不是这样,如果 Firefox 已经缓存了脚本,则不需要时间下载并且可以立即解析。解析器的工作方式可能不同,Firefox 在下载脚本后立即解析脚本,而 IE 将解析排队直到线程空闲。
您可以将此代码移至函数末尾,这意味着它仅在对象可用setUpJquery时才会执行。jQuery或者,您可以将代码放入其自己的函数中,并从该setUpJquery函数中调用该函数。