3

我的开发环境是基于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宽松处理引入的一个坏习惯,在数组定义中使用逗号(或者参数/变量列表一般也是)...

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

+0

与JavaScript代码另一个技巧就是通过类似的JSLint运行它来帮助收拾潜在的语法问题。 (http://www.jslint.org/) – Alconja 2009-08-25 04:22:38

回答

6

如果这就是你想要运行确切的代码,你缺少一个右括号&分号...尝试:

alert('HELLO'); 
$(document).ready(function(){ 
    alert('AWESOME!!!!!!!!!!!!'); 
}); //close the ready function call & statement 
alert('GOODBYE'); 
+0

非常感谢!当你盯着一个屏幕10个小时时,忽略像这样简单的事情是多么容易...... :) – rinogo 2009-08-25 00:55:10

+0

@rinogo - 你使用任何版本?差异可能会阻止这一点。 – karim79 2009-08-25 00:56:58

+0

如果在之前的版本中放置了'';'',那么差异只会有帮助。 – MitMaro 2009-08-25 00:59:16

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'); 

你可以看到它是完美的。

适当的黏合确实有助于避免这些问题:)

+0

你好柔滑!感谢您的建议。当谈到空白和缩进时,我确实很挑剔 - 这只是我的问题的一个简单例子...我会更详细地解释我的REAL问题在上面的评论中发生了什么......(再次感谢! :)) – rinogo 2009-08-25 01:20:03

相关问题