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

IE8抛出JavaScript语法错误-在脚本之外,javascript,internet-explorer,internet-explorer-8,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" + para

我遇到了一个奇怪的问题,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>
考虑到IE没有告诉我一条实际的错误消息,到目前为止,我还没有在网上找到任何关于这个的信息。JSLint也不会产生任何有用的东西,它在Chrome和FF中工作得完美无缺。我错过了什么明显的东西吗



编辑:我的直觉是,尽管IE在上面的代码片段中报告了错误,但它实际上正在其他地方消亡。这似乎是共识。我想我会浏览一下页面,看看我是否幸运地找到了错误。

我刚刚启动了运行IE 8.0.7601的windows box,并且没有报告此代码的语法问题

<?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>

我是你的文件标题代替我
//
分析师报告
IE因未指定发生错误的文件或未正确指定该文件而臭名昭著。尝试在IE调试器中运行它,看看错误是否完全不在另一个文件的第175行

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

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

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


如果删除CDATA(开始和结束标记),会发生什么?它会调用Ajax吗?URL返回的是什么?可能它试图将响应评估为JavaScript。您有一个XML CDATA部分,是否使用XHTML doctype?doctype是XHTML 1.0严格的。删除CDATA没有任何区别。进行了AJAX调用,但没有返回任何内容。我建议使用十六进制编辑器打开该文件,并检查
之间的换行符之前是否有任何有趣的不可见控件字符。//是必需的。删除它会导致浏览器将
解释为JS命令,这显然不是。我从问题中复制了你的代码,通过HTML验证服务运行了它,并生成了额外的锅炉板XHTML标记等。尝试从我的答案中复制并在IE中查看。这对我来说也很好。IE似乎在错误的位置报告错误。啊,好痛啊!您只需逐个删除脚本部分,直到找到它:(打得好,也试过了。在IE崩溃之前,我能让调试器运行两次,但两次都没有捕获到任何东西。我的直觉是,因为IE认为这是语法错误,而不是运行时错误,调试器不会在它上面崩溃。事实上,你记得的是Edison而不是Tesla,这说明你错了:)我记得特斯拉,但我也记得他在玩弄死亡射线和无叶片涡轮机,而爱迪生正在改变世界。
<?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>
 var x = [ 0, ];