我的很简单的Greasemonkey脚本是不是运行?

My very simple Greasemonkey script is not running?

我在使用这个非常基本的 Greasemonkey 脚本时遇到问题,最有可能是元数据配置。

这是基本文件的完整来源

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

alert("hi google!");

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

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

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

通用 Greasemonkey 调试步骤:

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

  1. 首先确保脚本甚至为有问题的页面触发。
    浏览该页面时,单击 Greasemonkey 图标旁边的向下三角形(或者,您可以打开 工具 -> Greasemonkey 在 Firefox 菜单上。)并确认预期的脚本名称出现并被选中。例如:

  2. 查看 messages/errors 在 Firefox's Browser Console 上是否有任何相关的 messages/errors。
    CtrlShiftJ 或等效命令激活控制台。

    这是显示消息和错误如何出现在浏览器控制台中的屏幕截图 -- 由网页和 Greasemonkey 脚本引起:

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

  4. 卸载 Greasemonkey 脚本。
  5. 彻底清除浏览器缓存。
  6. 完全关闭 Firefox。 使用 任务管理器 或等效工具,验证内存中没有 Firefox thread/task/process .
  7. 重新启动 Firefox。
  8. 重新安装 Greasemonkey 脚本。
  9. 如果仍然无法正常工作,请创建一个新的 Firefox 配置文件 或尝试使用不同的计算机

其他问题:

  1. 请提供您的 版本 三件事: (1) OS, (2 ) Firefox, (3) Greasemonkey 或 Tampermonkey 或 Scriptish 等

  2. @include * 意味着 脚本将在每一页都触发! 这几乎总是一种糟糕的做法。 (有一些例外,但你的情况不是这样。)

  3. @namespace 不控制页面运行的位置。 @namespace 唯一做的就是允许多个脚本具有相同的名字(只要他们的 @namespace 不同)。见 the @namespace documentation.

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

  5. Google 几乎总是 uses/redirects 到 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 行。所以,如果你只关心一个nation/locale,就用@match.


综合起来:

  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. 访问 Google 并在 Firefox 的浏览器控制台上记录结果。

  5. 如果仍然存在问题,请执行上述所有调试步骤。
  6. 如果还有问题,请打开一个新问题并提供以下所有内容:
    1. 上面提到的三个版本。
    2. 您在 浏览器控制台.
    3. 上收到的相关 错误和消息
    4. 复制问题所需的确切代码和步骤。 做一个MCVE for this!
    5. 您尝试解决问题的简短摘要。