我非常简单的Greasemonkey脚本没有运行?

时间:2015-06-26 23:42:12

标签: javascript debugging firefox greasemonkey

我遇到了这个非常基本的Greasemonkey脚本的问题,很可能是元数据配置。

以下是基本文件的完整来源

// ==UserScript==
// @name        Google Hello
// @namespace   https://google.com
// @description Basic Google Hello
// @include     *
// @version     1
// ==/UserScript==

alert("hi google!");

此脚本应在我访问Google.com时运行,但警报不会弹出。有什么问题?

我正在尝试使用Firefox在Ubuntu上运行此脚本。

1 个答案:

答案 0 :(得分:24)

如果alerts()未触发,您可能点击了Firefox的Prevent this page from creating additional dialogs选项,或者设置了浏览器偏好设置(旧版Firefox),或者Firefox可能在内存中变得不稳定。

Universal Greasemonkey调试步骤:

(针对alert()的问题添加了一步。)

  1. 首先确保脚本甚至针对相关页面触发。
    浏览该页面时,点击Greasemonkey图标旁边的三角形(或者,您可以打开工具 - > Greasemonkey Firefox菜单。)并验证是否显示了预期的脚本名称并进行了检查。 EG:
    Greasemonkey states

  2. 查看<{3}} 上是否有是否有任何相关消息/错误。
    Ctrl Shift J 或等效项来激活控制台。

    这是一个屏幕截图,显示了消息和错误如何出现在浏览器控制台中 - 由网页和Greasemonkey脚本引起:
    Firefox's Browser Console

  3. 打开about:config,搜索capability.policy.default.Window.alert并删除或重置该值(如果找到)。

  4. 卸载Greasemonkey脚本。
  5. 彻底清除浏览器缓存。
  6. 彻底关闭Firefox。使用任务管理器或等效内核验证内存中没有Firefox线程/任务/进程。
  7. 重启Firefox。
  8. 重新安装Greasemonkey脚本。
  9. 如果仍然无效,请创建新的Firefox个人资料或尝试不同的计算机

  10. 其他问题:

    1. 请提供以下三件事的版本(1)操作系统,(2)Firefox,(3)Greasemonkey或Tampermonkey或Scriptish等。

    2. @include *表示脚本将针对每个页面触发!这几乎总是一种不好的做法。 (有一些例外,但你的情况不是一个。)

    3. @namespace无法控制网页的运行位置。 @namespace唯一能做的就是允许多个脚本具有相同的名称(只要他们的@namespace是不同的。请参阅Sample Browser console results

    4. 避免使用alert()进行调试。它很烦人,可以掩盖时间问题 使用console.log()您可以浏览器控制台上查看结果和有用的错误消息(提示,提示)。

    5. Google几乎总是使用/重定向到www.google.com (适用于英国美国用户)。因此,// @include  https://google.com几乎永远不会像你想要的那样工作。

      建议您使用:

      // @match  *://www.google.com/*
      

      作为起点。

      在Firefox Greasemonkey中,您还可以使用魔术.tld来支持Google的大部分国际域名,例如:

      // @include  http://www.google.tld/*
      // @include  https://www.google.tld/*
      

      使用两条线。请注意,这不如@match行那样好。因此,如果您只关心一个国家/地区,请使用@match

    6. 全部放在一起:

      1. 卸载脚本。
      2. 重启Firefox。
      3. 安装脚本:

        // ==UserScript==
        // @name        Google Hello
        // @namespace   John Galt
        // @description Basic Google Hello
        // @match       *://www.google.com/*
        // @version     1
        // @grant       none
        // ==/UserScript==
        
        console.log ("Hi Google!");
        
      4. 访问the @namespace documentation并在Firefox浏览器控制台上记下结果。

      5. 如果仍有问题,请按照上述所有调试步骤进行操作。
      6. 如果仍有问题,请打开一个新问题并提供以下所有内容:
        1. 上面提到的三个版本。
        2. 您在浏览器控制台上获得的相关错误和消息。
        3. 复制问题所需的确切代码和步骤。 制作Google
        4. 您尝试解决问题的简短摘要。