IE8抛出JavaScript语法错误-在脚本之外
我遇到了一个奇怪的问题,IE8在脚本标记之外报告了一个JavaScript错误(或者它声称的那样),并破坏了页面上所有进一步的JS。以下是违规代码: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
<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, ];