我的开发环境是基于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仍然无故障地执行。也许我有太多现成的处理程序? (我只有五个......?)
有什么想法?我已经和我斗争了几个小时,我不知道发生了什么。在此先感谢您的帮助!
更新 感谢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的宽容引入了数组定义中的逗号(或者可能是参数/变量列表)总的来说......)
无论如何,这是固定的!所以,再次感谢大家! :)
答案 0 :(得分:6)
如果这是您尝试运行的确切代码,那么您就错过了一个紧密的括号&分号...尝试:
alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}); //close the ready function call & statement
alert('GOODBYE');
答案 1 :(得分:2)
我知道这已经得到了解答,但我只想分享一些建议。你可以通过在每个开放式支架上进行选项卡来帮助避免这样的问题。如果我们接受您的代码并将其标记为:
alert('HELLO');
$(document).ready(
function(){
alert('AWESOME!!!!!!!!!!!!');
}
alert('GOODBYE');
你可以清楚地看到缺少的东西。
如果您选择已发布的答案并将其标记为:
alert('HELLO');
$(document).ready(
function(){
alert('AWESOME!!!!!!!!!!!!');
}
); //close the ready function call & statement
alert('GOODBYE');
你可以看到它是完美的。
适当的标签确实有助于避免这些问题:)