【问题标题】:Tampermonkey - Right click menuTampermonkey - 右键菜单
【发布时间】:2017-08-05 15:36:57
【问题描述】:

使用 Tampermonkey 有没有办法在 Chrome 中创建右键菜单选项?

我找到了GM_registerMenuCommand,但它似乎没有在右键菜单中显示任何新项目。

另一个问题是我在测试脚本中使用了GM_openInTab,但它似乎由于某种原因无限循环。应该是点击菜单后才会触发,为什么会这样?

另外我想知道有没有办法通过自定义右键单击图标等以更高级的方式做到这一点?

有一个适用于菜单的 Firefox GM 脚本,但在 Chrome 中似乎什么都没有显示,所以最好有办法让它工作。

// ==UserScript==
// @name            Context Menu
// @namespace       http://tampermonkey.net/
// @description     Test
// @version         0.1
// @author          author
// @include         *
// @exclude         file://*
// @grant           GM_openInTab
// @grant           GM_registerMenuCommand
// ==/UserScript==]


(function() {
    'use strict';

function test() {
    GM_openInTab("https://website.net");
}

GM_registerMenuCommand("hello", test(), "h");

})();

【问题讨论】:

  • @wOxxOm 你有一个简单的代码示例来说明它是如何工作的吗?该线程似乎是有人请求功能。
  • 我自己没有尝试过,但我可以告诉你一件事:该功能已实现。
  • 您在 registerMenuCommand 函数中调用 test(),而不是将其作为函数传递。尝试做GM_registerMenuCommand("hello", test, "h");

标签: javascript tampermonkey


【解决方案1】:

根据wOxxOm 的评论,可以使用@run-at context-menu

示例

// ==UserScript==
// @name            Go to Website.Net
// @namespace       http://tampermonkey.net/
// @description     Context menu to execute UserScript
// @version         0.1
// @author          author
// @include         *
// @grant           GM_openInTab
// @run-at          context-menu
// ==/UserScript==]


(function() {
    'use strict';
    GM_openInTab("https://website.net");
})();

结果:(效果很好:)

【讨论】:

  • 不错的一个;我不知道@run-at context-menu。 (愚蠢地使用 Greasemonkey 作为我的主要引擎(GM 4 之前))
  • 是的,我也是,从评论中学习并去检查。对于单次操作非常方便:)
【解决方案2】:

您应该使用GM_registerMenuCommand("hello", test, "h") 而不是GM_registerMenuCommand("hello", test(), "h")

第一个版本立即调用test 函数,然后将其结果传递给GM_registerMenuCommand 函数。第二个传递函数本身而不是其结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多