未定义GM_openInTab(或任何其他GM_函数)

GM_openInTab (or any other GM_ function) is not defined?

本文关键字:GM 其他 函数 任何 openInTab 未定义      更新时间:2023-09-26

当我的GM脚本这样做时:

var curTab = GM_openInTab(url);

它会导致浏览器控制台中出现'GM_openInTab is not defined' JavaScript 错误。

我也尝试使用var curWin = window.open(url);代替GM_openInTab但它没有影响。

我试图用这个GM脚本做的是:对于一个给定的网站(域名),浏览这个域上的URL列表(数组)并查找感兴趣的项目。

我的代码或方法有什么问题?

我正在使用 Greasemonkey 2.3 和 Firefox 33.1.1 和 Windows XP 32 位。

为了使用任何GM_函数,您必须设置匹配的@grant指令Doc(从 Greasemonkey 版本 2.0发行说明开始)

例如:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_openInTab
// ==/UserScript==
var curTab  = GM_openInTab ("http://pwnthemall.com/");

请注意,这有将 Greasemonkey 的沙盒切换回去的副作用。 另请参阅:

  • 错误:访问属性"处理程序"的权限被拒绝
  • 设置@grant值时如何访问"窗口"(目标页面)对象?


Tampermonkey 从版本 3.9发行说明开始模拟大部分此行为。但是,如果未指定@grant,当前版本(3.9.202)仍会尝试猜测适当的值,因此您不一定会看到错误(还)。
无论如何,请始终使用 @grant,以获得最大的兼容性并使代码面向未来。