是否存在太多$(document).ready handlers(IE)这样的东西?

rin*_*ogo 3 javascript jquery internet-explorer-7 internet-explorer-6

我的开发环境是基于LAMP的(Drupal); 有几个JS(jQuery)文件可以提供各种功能.

直到最近,事情还不错(好吧,IE6很可怕,但至少它起作用了).然而,最近,我的JS文件中的一个已开始拒绝执行所有在IE6和IE7.

如果文件包含以下内容,我会收到两条警告,分别是"HELLO"和"GOODBYE":

alert('HELLO');
alert('GOODBYE');
Run Code Online (Sandbox Code Playgroud)

但是,当我添加就绪处理程序时,我得到的确是警报:

alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}
alert('GOODBYE');
Run Code Online (Sandbox Code Playgroud)

奇怪的是我的代码在Firefox和IE8中运行良好(例如我们看到'真棒!!! ...').此外,此代码用于在IE6/7中正常运行.为了使事情更奇怪,其他 JS文件中的jQuery 仍然可以执行而不会发生任何事故.也许我有太多现成的处理程序?(我只有五个......?)

有什么想法吗?我已经和我斗争了几个小时,我不知道发生了什么.在此先感谢您的帮助!

更新 感谢Alconja(下图),我们确定问题是由于缺少了paren和分号.我在我的一小部分测试代码中修复了问题,并按预期执行了alert().然而,当我回到我的满量程代码库中,括号/分号对存在.但是,考虑到我使用短测试工具所经历的(以及我在将我的全长代码修剪到测试工具时无意中引入的错误)​​,我知道问题是由于javascript中的语法错误引起的.因此,我只是浏览了文件,删除了越来越多的代码,直到alert()框出现.

正如所预料的那样,(原始)问题是由语法错误引起的.我的(不正确的)代码是:

    $.post(
        '../ajax/changeUrl',
        {
            url: url,
        },
        function(responseText, textStatus, xhr) {
            // console.log(this);
            // console.log(responseText);
            // console.log(textStatus);
            // console.log(xhr);
        }
    );
Run Code Online (Sandbox Code Playgroud)

如您所见,"url:url"行上有一个额外的逗号.删除此逗号后,脚本正确执行.当然,Firefox和其他浏览器并没有像IE那样严重,我知道为什么我插入了这个错误 - 这是一个坏习惯,PHP的宽容引入了数组定义中的逗号(或者可能是参数/变量列表)一般来说)...

无论如何,这是固定的!所以,再次感谢大家!:)

Alc*_*nja 6

如果那是您尝试运行的确切代码,那么您将错过一个紧密的括号和分号...尝试:

alert('HELLO');
$(document).ready(function(){
    alert('AWESOME!!!!!!!!!!!!');
});   //close the ready function call & statement
alert('GOODBYE');
Run Code Online (Sandbox Code Playgroud)