2008-10-24 327 views
11

我寫的JavaScript代碼是作爲字符串讀取並通過eval()通過Firefox擴展執行的。 Firebug會「看到」我的腳本,因此我無法使用斷點,看到對象等。調試greasemonkey般的腳本

我目前正在使用Firefox的錯誤控制檯,我開始發現限制。我的其他選擇是什麼?理想情況下,我可以使用Firebug或類似的東西。人們通常如何調試Greasemonkey腳本?

我試過使用Lint和其他驗證器,但是我的腳本使用了很多擴展環境提供的對象和函數,使得大量的錯誤報告不相關。另外,輸出結果往往過於挑剔(聚焦間距問題等)。

回答

2

我創建了一個用於調試G的交互式控制檯reasemonkey腳本。它需要Google Gears,但它包含一個持續輸入的命令歷史記錄。

UPDATEHere's a link發表到博客文章描述使用GreasyThug調試GM腳本。它有一步一步的過程來複制錯誤並設計解決方案。

1

我使用這個代碼,以便能夠使用jQuery(無需unsafeWindow黑客)來訪問頁面的DOM和錯誤記錄到螢火蟲控制檯:

(function(_, $){ 
    try { 
    var GM_log = function(obj) { _.console.log(obj); } 

    // $("#my_div").reaplaceWith("hello world!"); 
    // _.someFunctionDefinedInTheWebsite(); 

    } catch(e) { 
    GM_log(e); 
    } 
})(unsafeWindow, unsafeWindow.jQuery); 

:本例假設您正在訪問的頁面已經使用jQuery