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

Joh*_*alt 14 javascript debugging firefox greasemonkey

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

这是基本文件的完整源代码

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

alert("hi google!");
Run Code Online (Sandbox Code Playgroud)

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

我试图用Firefox在Ubuntu上运行这个脚本.

Bro*_*ams 26

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

Universal Greasemonkey调试步骤:

(添加了一步以解决问题alert().)

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

  2. Firefox的浏览器控制台查看是否有任何相关的消息/错误.
    CtrlShiftJ或等效激活控制台.

    这是一个屏幕截图,显示了如何在浏览器控制台中显示消息和错误- 由网页和Greasemonkey脚本引起:
    示例浏览器控制台结果

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

  4. 卸载Greasemonkey脚本.
  5. 完全清除浏览器缓存.
  6. 完全关闭Firefox. 使用任务管理器或等效的内核验证内存中没有Firefox线程/任务/进程.
  7. 重启Firefox.
  8. 重新安装Greasemonkey脚本.
  9. 如果它仍然无效,请创建一个新的Firefox配置文件或尝试另一台计算机.

其他问题:

  1. 请提供三种版本的版本:(1)操作系统,(2)Firefox,(3)Greasemonkey或Tampermonkey或Scriptish等.

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

  3. @namespace不控制页面的运行位置. 唯一@namespace允许的是允许多个脚本具有相同的名称(只要它们的@namespaces不同).请参阅@namespace文档.

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

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

    建议你使用:

    // @match  *://www.google.com/*
    
    Run Code Online (Sandbox Code Playgroud)

    作为一个起点.

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

    // @include  http://www.google.tld/*
    // @include  https://www.google.tld/*
    
    Run Code Online (Sandbox Code Playgroud)

    使用两条线.请注意,这不如@match线路那么好.所以,如果您只关心一个国家/地区,请使用@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!");
    
    Run Code Online (Sandbox Code Playgroud)
  4. 访问Google并在Firefox的浏览器控制台上记下结果.

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

  • 写意面......太棒了 (5认同)