jquery(document).ready()无法在IE 7+中运行

时间:2011-09-01 20:42:48

标签: jquery internet-explorer document-ready

对我来说这似乎是一个非常简单的问题,但是尽管使用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文件的位置是否有任何怪癖?

5 个答案:

答案 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'>

似乎让它发挥作用。希望这会有所帮助。