2012-03-08 20 views
2

我試圖讓Greasemonkey的Userscript工作,但它一直拋出 「錯過;在語句」前 在Javascript錯誤控制檯。Greasemonkey調試,獲取實際行號

Greasemonkey文檔說應該忽略行號,但由於腳本非常冗長,所以知道錯誤發生的位置會非常有幫助。我如何知道?

編輯:所以,長話短說。在最近的Greasemonkey版本中,行號是正確的。

+1

對於語法錯誤,我真的很喜歡使用[jsHint](http://jshint.org)。它也做了一些簡單的靜態分析,這也有助於捕捉許多錯誤和樣式不一致。 – hugomg 2012-03-08 13:37:32

回答

1

Greasemonkey的最新版本似乎充分報告了行號,但在Greasemonkey腳本中使用它之前,最好在Firebug控制檯中儘可能多地調試和測試腳本。
而且,如missno所說,jsHint可以很好地捕捉這些類型的問題。

無論如何,假設我有一個這樣的腳本:

// ==UserScript== 
// @name  _Debugging test 
// @include  http://YOUR_SERVER/YOUR_PATH/* 
// ==/UserScript== 

unsafeWindow.console.log ('Line 1', 1 + 0); 

unsafeWindow.console.log ('Line 2', 1 + 1); 

unsafeWindow.console.log ('Line 3', 1 + 2); 

unsafeWindow.console.log ('Line 4 **Throw error here**', 1 + 3 + nonExistantVariable); 

unsafeWindow.console.log ('Line 5', 1 + 4); 


當我在我的系統(操作系統,FF的2運行:10.0.2,GM:0.9.18,螢火蟲:1.9 .1和除GM相同:0.9.17),我得到Firebug的控制檯上:

 
Line 1 1 
Line 2 2 
Line 3 3 

這個Firefox的錯誤控制檯(按Ctrl Ĵ):

Line numbers reported


點擊鏈接,得出:

Source view

缺席真正的調試功能,它沒有得到比這更好。