Google Chrome扩展程序Javascript意外令牌非法

时间:2010-10-15 05:44:22

标签: javascript google-chrome-extension

这看起来很熟悉,但我找不到任何关于它的信息......确定我找到了关于“意外令牌非法”的内容,但这些情况并不足以让这些解决方案有意义。

我有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行出现错误“Unexpected Token ILLEGAL”的地方。如果我在顶部添加一个空行,它仍会在第一行引发错误。

在我的Javascript中,我调用了三个初始化函数:

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

如果我评论所有这三个功能(不少),则错误消失。我已经对其余的代码进行了三重检查,并且在语法或逻辑上都没有看错。

我完全被难过了...我已经用Javascript编程了好几年了,然而它仍然会发现奇怪的事情向我投掷。

5 个答案:

答案 0 :(得分:1)

我知道这已经有几个月的历史了,但我的扩展程序确实存在完全相同的问题,因为我努力尽快修复它,这让我很难过。我尝试弄乱编码,替换所有换行符等,直到在Chrome控制台中运行window.location.reload()。这次,调试器指向外部JavaScript文件中的一行,而不是返回对HTML文件开头的引用。怪异!

最重要的是,在旧版本的扩展程序中,我在不使用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。

答案 1 :(得分:0)

当我包含一个不存在的文件时,我经常会收到此错误。你检查过jquery.js和background.js确实存在吗?

答案 2 :(得分:0)

我弄清楚它是什么:我使用的是localStorage功能,并且最初使用了我的更新功能来初始化它,虽然一旦更新功能要求它先前定义,这个错误发生了......最后,似乎我将null传递给了JSON.parse,它以某种方式失败了。

答案 3 :(得分:0)

如果您对其运行代码,JSLint会说什么?

答案 4 :(得分:0)

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

我的问题是我有一个简单的块:

<script>
</script>

它似乎是空的,因为它是动态生成的,我没有太多的逻辑来处理块为空的情况。

出于某种原因,Chrome解析器会挂在脚本块上,其中只有一个\ n换行符。