对我来说这似乎是一个非常简单的问题,但是尽管使用Google搜索每个可能的搜索字符串,但我找不到答案。
我正在使用jquery 1.5.1并尝试使用$(document).ready()函数在页面加载时绑定多个单击事件。最终我把问题缩小到这么小:
$(document).ready(function(){
alert('hello world');
});
在IE 6,7和8中,当我加载页面时,我从未看到hello world警报。 IE 9可以正常工作,FF,Chrome,Safari等也是如此。
一种有效的解决方案是在500毫秒的JS超时中包围警报。这似乎有时似乎有效,但绝对不够。
我能想到的唯一可能性是因为这个脚本恰好被加载到页面HTML的body标签内,这可能会搞乱ready()函数。如果是这种情况,我不知道解决方案是什么。
更新
好的,在测试一个较小的页面后,我可以准备好在IE中工作的文档(虽然没有警报,我想这是一个完全不同的问题)。
关于IE在页面中加载javascript文件的位置是否有任何怪癖?
答案 0 :(得分:1)
type=""
属性中包含哪些内容? IE涉及到该属性时非常严格。如果指定该属性,则必须包含"text/javascript"
,否则IE将忽略它。
答案 1 :(得分:0)
你有其他任何可能与jQuery $?
冲突的javascript文件在页面加载时进行测试,
if (typeof jQuery == 'undefined') {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'js/jquery/1.4.4/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(script);
setTimeout(checkjQuery, 0);
}
function checkjQuery() {
if (typeof jQuery == 'undefined') {
setTimeout(checkjQuery, 0);
} else {
jQuery.noConflict();
}
};
答案 2 :(得分:0)
没有理由在页面的BODY中使用$(document).ready
。当您的SCRIPT标签位于页面的HEAD中时使用它,或者删除它,并且在关闭所有必要的主体元素之前不要添加SCRIPT标记。
答案 3 :(得分:0)
因此,在弄清楚这一点后,我得出的结论是我在VM中使用的IE浏览器出错了。无论我对javascript做出什么改变,按钮和ajax调用无法正常工作似乎都是随机和间歇性的。我认为准备好的文件一直在工作,浏览器以不同的方式失败。它似乎现在正在运作。
答案 4 :(得分:0)
我对IE7有这个问题,似乎我正在使用
<script type='application/javascript' language='javascript'>
$(document).ready(function() { ... })
</script>
将第一个脚本标记更改为
<script type='text/javascript' language='javascript'>
似乎让它发挥作用。希望这会有所帮助。