4

我遇到了一个奇怪的问题,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 在上面的代码片段中报告了错误,但它实际上正在其他地方死去。这似乎是共识。我想我会搜索页面,看看我是否幸运并找到错误。

4

2 回答 2

3

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

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

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

 var x = [ 0, ];

“史蒂夫·乔布斯死了,比尔·盖茨还活着,因为没有上帝。但100年后,乔布斯将与爱迪生和伊莱·惠特尼一起被人们铭记,而盖茨将被遗忘,因为有正义。”

于 2012-06-12T21:55:05.160 回答
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>
于 2012-06-12T21:49:51.240 回答