【发布时间】:2009-08-25 09:27:09
【问题描述】:
我的开发环境是基于 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 中运行良好(例如,我们看到 'AWESOME!!!...')。此外,这段代码曾经在 IE6/7 中运行良好。更奇怪的是,other JS 文件中的 jQuery 仍然可以顺利执行。也许我有太多准备好的处理程序? (我只有大约五个……?)
有什么想法吗?我已经为此奋斗了几个小时,我不知道发生了什么。提前感谢您的帮助!
更新 感谢 Alconja(如下),我们确定问题是由于缺少括号和分号。我在我的一小段测试代码中解决了这个问题,并按预期执行了 alert()s。然而,当我回到我的完整代码库时,括号/分号对 出现了。然而,考虑到我在短测试工具中的经历(以及我在将全长代码修剪为测试工具时无意中引入的错误),我知道问题是由于 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 代码的另一个技巧是通过 JSLint 之类的东西运行它,以帮助发现潜在的语法问题。 (jslint.org)
标签: javascript jquery internet-explorer-6 internet-explorer-7