谷歌浏览器:JavaScript错误消息

时间:2008-12-26 05:58:26

标签: javascript google-chrome

使用Google Chrome时,收到以下错误消息:

错误:

Uncaught SyntaxError: Unexpected token <

它直接发生在我的HTML页面顶部的doctype声明之后

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

任何想法这个JavaScript错误消息是什么?它似乎只发生在谷歌Chrome(在Safari,Firfox和IE中正常工作)

10 个答案:

答案 0 :(得分:14)

当我使用JQuery从HTML格式的XMLHTTPRequest加载HTML时,我遇到了这个问题,但是mime类型是text / javascript。

例如,我有一些代码如:

jQuery.ajax({
    data:'params=here',
    success:function(request) {
        jQuery('#country_list_container').html(request);
    },
    type:'get',
    url:'/getHtml'
});

jQuery正在向getHtml发送请求,而getHtml正在返回一个简单的HTML片段,其中mime / type为"text/javascript"getHtml操作返回text/javascript的原因是因为jQuery请求的接受标头是:

"Accept:text/javascript, text/html, application/xml, text/xml, */*"

所以,我所要做的只是强制text/html的标题,一切都很完美。

您看到的解析错误是Javascript尝试评估内容的结果。

答案 1 :(得分:2)

在我的情况下,它是由eval()语句中止引起的。当我修复问题时,错误消息消失了。

目前(2010年6月)Chrome Javascript有一个错误的eval()声明。如果eval()语句中的变量已分配保留字“eval()”,delete将中止而不发出错误消息。我花了差不多一个星期来发现这个错误,因为eval()在没有任何警告或错误消息的情况下中止,并且中止具有令人讨厌的副作用。

我使用eval()来实现此结果:obj.delete = somevalue。

此代码将导致eval()中止:

var obj = new Object();
var x = 'delete';
var y = 2;
eval('obj.' + x + ' = y');

此代码有效:

var obj = new Object();
var x = 'delete';
var y = 2;
eval('obj[\'' + x + '\'] = y');

总之,请勿使用eval()来构建obj.delete = somevalue。使用eval()构造等效语句obj["delete"] = somevalue

答案 2 :(得分:1)

也许HTTP内容类型不是text/htmlapplication/xhtml+xml

答案 3 :(得分:1)

我发现了这个Google网上论坛的问题。

其他一些人遇到了问题,但没有解决问题。

http://www.google.com/support/forum/p/Chrome/thread?tid=7e9f87870a37e401&hl=en

答案 4 :(得分:1)

尝试切换css和js声明的顺序。为我工作。

答案 5 :(得分:1)

如果要在JSON中返回对ajax请求的响应,请确保使用'application/json'作为Content-Type。

答案 6 :(得分:1)

冒着挖掘旧线程的风险(我认为最好将所有信息保存在一个地方),Chrome仍然会抛出这些错误。我在开发一个网站时得到了以下内容,并尝试使用页面JS和PHP进行各种操作来摆脱它。我得到的错误是:

error in event handler for 'undefined': SyntaxError: Unexpected token ILLEGAL
chrome/EventBindings:183

最终在检查FireFox中的代码有效性时,我偶然发现了答案,并警告说某些文字中有'&'应该转换为'&amp;' - 一旦完成此操作,Chrome错误就会消失

史蒂夫

答案 7 :(得分:0)

当我尝试使用php动态生成.innerHTML时,我遇到了这个问题(它生成了多行)。

用空格替换换行符解决了这个问题。

答案 8 :(得分:0)

如果是Rails应用程序,请检查format.js是否在response_to块中。

答案 9 :(得分:0)

我在Chrome Dev Tools中也遇到了这个错误,我的原因与Matthew O'Riordan相似,不过它不是Accept MIME类型,而是破坏的AJAX URL。

我重新安排了我的文件夹结构,忘了更新网址;一旦我修复了URL,Dev Tools JS Error就消失了。 希望这可以帮助! :)