我遇到了这个非常基本的Greasemonkey脚本的问题,很可能是元数据配置。
以下是基本文件的完整来源
// ==UserScript==
// @name Google Hello
// @namespace https://google.com
// @description Basic Google Hello
// @include *
// @version 1
// ==/UserScript==
alert("hi google!");
此脚本应在我访问Google.com时运行,但警报不会弹出。有什么问题?
我正在尝试使用Firefox在Ubuntu上运行此脚本。
答案 0 :(得分:24)
如果alerts()
未触发,您可能点击了Firefox的Prevent this page from creating additional dialogs
选项,或者设置了浏览器偏好设置(旧版Firefox),或者Firefox可能在内存中变得不稳定。
(针对alert()
的问题添加了一步。)
首先确保脚本甚至针对相关页面触发。
浏览该页面时,点击Greasemonkey图标旁边的三角形(或者,您可以打开工具 - > Greasemonkey Firefox菜单。)并验证是否显示了预期的脚本名称并进行了检查。 EG:
查看<{3}} 上是否有是否有任何相关消息/错误。
按 Ctrl Shift J 或等效项来激活控制台。
这是一个屏幕截图,显示了消息和错误如何出现在浏览器控制台中 - 由网页和Greasemonkey脚本引起:
Firefox's Browser Console
打开about:config
,搜索capability.policy.default.Window.alert
并删除或重置该值(如果找到)。
请提供以下三件事的版本:(1)操作系统,(2)Firefox,(3)Greasemonkey或Tampermonkey或Scriptish等。
@include *
表示脚本将针对每个页面触发!这几乎总是一种不好的做法。 (有一些例外,但你的情况不是一个。)
@namespace
无法控制网页的运行位置。 @namespace
唯一能做的就是允许多个脚本具有相同的名称(只要他们的@namespace
是不同的。请参阅。
避免使用alert()
进行调试。它很烦人,可以掩盖时间问题
使用console.log()
。您可以在浏览器控制台上查看结果和有用的错误消息(提示,提示)。
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
。
安装此脚本:
// ==UserScript==
// @name Google Hello
// @namespace John Galt
// @description Basic Google Hello
// @match *://www.google.com/*
// @version 1
// @grant none
// ==/UserScript==
console.log ("Hi Google!");
访问the @namespace
documentation并在Firefox浏览器控制台上记下结果。