我的开发环境是基于LAMP的(Drupal);有几个JS(jQuery)文件可以提供各种功能。直到最近,事情工作正常(嗯,IE6是可怕的,但至少它工作)。但是,最近,我的一个JS文件开始拒绝在IE6和IE7中执行,全部为。
如果该文件包含以下,我收到两个警报,读“你好”和“再见”:
alert('HELLO');
alert('GOODBYE');
然而,当我在准备处理程序添加,我得到完全零警报:
alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}
alert('GOODBYE');
奇怪的是,我的代码在Firefox和IE8中正常工作(例如,我们看到'真棒!!! ...')。此外,这段代码在IE6/7中运行良好。为了让事情变得更加奇怪,jQuery在其他 JS文件仍然没有发生意外执行。也许我有太多现成的处理程序? (我只有大约五个...?)
有什么想法?我几个小时以来一直在对抗这个问题,我不知道发生了什么。在此先感谢您的帮助!
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);
}
);
正如你可以看到,有上线阅读“网址:网址,”一个额外的逗号。一旦我删除了这个逗号,脚本就正确执行了。当然,Firefox和其他浏览器并没有像IE那样糟糕,我也知道为什么我插入了这个错误 - 这是PHP宽松处理引入的一个坏习惯,在数组定义中使用逗号(或者参数/变量列表一般也是)...
无论如何,它是固定的!所以,再次感谢大家! :)
与JavaScript代码另一个技巧就是通过类似的JSLint运行它来帮助收拾潜在的语法问题。 (http://www.jslint.org/) – Alconja 2009-08-25 04:22:38