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的宽容引入了数组定义中的逗号(或者可能是参数/变量列表)一般来说)...
无论如何,这是固定的!所以,再次感谢大家!:)
如果那是您尝试运行的确切代码,那么您将错过一个紧密的括号和分号...尝试:
alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}); //close the ready function call & statement
alert('GOODBYE');
Run Code Online (Sandbox Code Playgroud)