2010-10-15 53 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換行符。