2010-10-15 34 views
1

这看似熟悉,但我无法找到任何关于它... ...相信我已经找到了有关的东西“意外的标记非法”,但这种情况下不为那些涉及足够解决方案才有意义。谷歌Chrome扩展的Javascript意外的标记非法

我有我的background page,像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title>Background Page</title> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="background.js"></script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
</head> 
<body> 

</body> 
</html> 

一小块符合W3的标记,然而这是哪里的错误“意外令牌非法”发生时,1号线。如果我添加一个空白在顶部行,它仍然在第一行发生错误。

在我的JavaScript,我召唤3个初始化函数:

localData.init(); 
localRead.init(); 
getTitles(); 

如果我评论全部三种功能(没有较少),错误消失。我已经三重检查了我的代码的其余部分,并且可以在语法上或逻辑上看到任何错误。

我彻底难倒...我在Javascript编程了多年,但它仍然发现古怪我扔。

+0

你的标记是好的,你能告诉我们'background.js'的内容吗? V8s解析器经常会在完全随机的地方抛出关于包含文件的错误。 – 2010-10-15 06:26:21

回答

0

我想通了,这是什么:我用的是localStorage的功能,和原先用我的更新功能来初始化它,但一旦更新功能要求它被先前定义的,这个错误发生......到底,似乎我传递null给JSON.parse,它以某种方式失败。

0

我经常收到的时候我已经提供了一个不存在的文件,这个错误。你有没有检查jquery.js和background.js确实存在?

+0

是的,他们非常活跃。 – skeggse 2010-10-15 14:37:45

0

是什么JSLint说,如果你在它运行您的代码?

1

我知道这是个月大,但我只是有确切同一问题有一个扩展,它害了我,我奋力尽快修复它。我试着编码,替换所有linebreaks等,直到在Chrome控制台中运行window.location.reload()。这一次,调试器不是返回HTML文件开头的引用,而是指向外部JavaScript文件中的一行。奇怪的!

的底线是,在旧版本的扩展程序,我有存储,而无需使用JSON.stringify文本值。所以当试图JSON.parse那个价值时,一切都失败了。下面是它看起来像在控制台:

> localStorage.good = JSON.stringify("good"); 
    localStorage.bad = "bad"; 
    console.log(JSON.parse(localStorage.good)); 
    console.log(JSON.parse(localStorage.bad)); 
> good 
> SyntaxError: Unexpected token ILLEGAL 

如果出现这种情况,而网页加载时,页面不会出现使过去<!doctype>声明。事实上,它确实存在,但它被挂起了。 Eeevil。

0

为防万一其他人绊倒这个问题,我有另一个错误示例 未捕获的SyntaxError:意外的令牌非法的。对我来说,它出现在prototype.js中,因为Prototype试图在AJAX调用完成后在我的标记中评估脚本。

在我的情况的问题是,我有一个简单的块:

<script> 
</script> 

看来空的,因为它是动态生成的,而且我也没有太多的逻辑的地方,处理这种情况,其中块将是空的。

由于某种原因,Chrome分析器挂在脚本块上,只有一个\ n换行符。