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

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

当我的 GM 脚本执行此操作时:

var curTab = GM_openInTab(url);

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

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

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

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

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

为了使用任何GM_函数,您必须设置一个匹配的@grant directiveDoc (As of Greasemonkey version 2.0Release notes)

例如:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_openInTab
// ==/UserScript==

var curTab  = GM_openInTab ("http://pwnthemall.com/");

请注意,这会对重新打开 Greasemonkey 的沙箱产生 副作用。另请参阅:

  • Error: Permission denied to access property 'handler'
  • How to access `window` (Target page) objects when @grant values are set?


Tampermonkey 模拟了 version 3.9Release notes 中的大部分行为。但是如果未指定 @grant,当前版本 (3.9.202) 仍会尝试猜测适当的值,因此您不一定会看到错误(目前)。
始终使用 @grant,以获得最大的兼容性和面向未来的代码。