【问题标题】:Debugging greasemonkey-like scripts调试类似greasemonkey的脚本
【发布时间】:2008-10-24 00:07:58
【问题描述】:

我正在编写 javascript 代码,该代码作为字符串读入,并由 firefox 扩展通过 eval() 执行。 Firebug 确实“看到”了我的脚本,所以我无法使用断点、查看对象等。

我目前正在使用 Firefox 的错误控制台,我开始发现它有限制。我还有哪些其他选择?理想情况下,我可以使用 Firebug 或类似的东西。人们通常如何调试 Greasemonkey 脚本?

我尝试过使用 Lint 和其他验证器,但我的脚本使用了扩展环境提供的大量对象和函数,导致报告的许多错误无关紧要。此外,输出往往过于挑剔(关注间距问题等)。

【问题讨论】:

    标签: debugging firefox-addon greasemonkey


    【解决方案1】:

    我创建了一个交互式控制台来调试 Greasemonkey 脚本。它需要 Google Gears,但它包含输入命令的持久历史记录。

    更新Here's a link 到一篇描述使用 GreeasyThug 调试 GM 脚本的博客文章。它有一个逐步的过程来复制错误并设计解决方案。

    【讨论】:

      【解决方案2】:

      我使用此代码是为了能够使用 jQuery 访问页面 DOM(无需使用 unsafeWindow hack)并将错误记录到 Firebug 控制台:

      (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

      【讨论】:

        【解决方案3】:

        据我所知,Firebug 从 1.1 开始支持 eval() 调试,特别是对于 GreaseMonkey,您可以使用 GM_log 进行基本日志记录,您可能会发现这个工具也很有用:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-23
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 1970-01-01
          • 2011-05-29
          • 2016-09-28
          相关资源
          最近更新 更多