IE8抛出JavaScript语法错误 - 在脚本之外

时间:2012-06-12 21:24:30

标签: javascript internet-explorer internet-explorer-8

我遇到一个奇怪的问题,即IE8在脚本标记之外报告了一个JavaScript错误(或者声称它),并在页面上打破了所有进一步的JS。这是违规代码:

<script type="text/javascript">//<![CDATA[
    function emailReport() {
        var params = window.location.search;
        var url = "scripts/someScript.php" + params;
        ajaxwl(url, false, null, function() {
            alert("Report successfully sent.");
        });
    }
//]]></script>
<h2>Analyst Report</h2>

ajaxwl()只是jQuery.ajax()的一个包装器,在整个站点的数百个地方使用,没有任何问题。

IE声称语法错误(它没有详细说明是什么类型)在</script>标记的行的字符23处。这特别奇怪,因为该行只有15个字符。但是,如果我检查IE8开发人员工具中的假定位置,它实际上会将错误放在下一行<h2>标记的中间。

以下是官方IE错误消息:

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.1; MS-RTC LM 8)
Timestamp: Tue, 12 Jun 2012 21:19:38 UTC


Message: Syntax error
Line: 175
Char: 23
Code: 0

鉴于IE没有告诉我实际的错误消息,到目前为止我还无法在网上找到任何相关信息。 JSLint也没有产生任何帮助,它在Chrome和FF中完美运行。我错过了一些明显的东西吗?


编辑:我的预感是,尽管IE在上面的代码片段中报告了错误,但它实际上正在其他地方死亡。这似乎是共识。我想我会在页面上搜索,看看我是否幸运并找到错误。

2 个答案:

答案 0 :(得分:3)

IE因未指定发生错误的文件或未正确指定而臭名昭着。尝试在IE调试器中运行它,看看错误是否完全不在另一个文件的第175行。

编辑调试器不起作用,因此您将不得不以这样的方式执行此操作:页面保存到您的磁盘;将所有Javascript文件连接成一个大文件;从其他空白页面包含该文件。现在,行号将是不同的,但在您拥有的唯一JS文件中是准确的。

我的预测:终端逗号。以下代码行在Javascript中是合法的,但在IE“JScript”中则不合适。

 var x = [ 0, ];
  “史蒂夫乔布斯死了,比尔盖茨还活着,因为没有上帝。但是100年后,乔布斯将被爱戴森和伊莱惠特尼铭记,而盖茨将被遗忘,因为有正义

答案 1 :(得分:2)

我刚启动运行IE 8.0.7601的Windows框,并且没有使用此代码报告语法问题

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
   <title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
 </head>
 <body>
   <div>

<script type="text/javascript">//<![CDATA[
    function emailReport() {
        var params = window.location.search;
        var url = "scripts/someScript.php" + params;
        ajaxwl(url, false, null, function() {
            alert("Report successfully sent.");
        });
    }
//]]></script>
<h2>Analyst Report</h2>


   </div>
 </body>
</html>