编程语言
首页 > 编程语言> > javascript – 是否存在太多$(document).ready handlers(IE)这样的东西?

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

作者:互联网

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

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

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

alert('HELLO');
alert('GOODBYE');

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

alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}
alert('GOODBYE');

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

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

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

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

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

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

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

标签:javascript,jquery,internet-explorer-7,internet-explorer-6
来源: https://codeday.me/bug/20190726/1547653.html