Greasemonkey: 重新考虑在 GM 4.x 中实现 GM_registerMenuCommand

创建于 2017-11-20  ·  5评论  ·  资料来源: greasemonkey/greasemonkey

正如我所见(见评论) GM_registerMenuCommand被 HTML5 上下文菜单取代。 并且没有计划在 GM 4.x 中添加它。

尽管如此,我已经开始了这个单独的问题。 希望你会重新考虑。


我知道在本机上下文菜单中添加一些上下文菜单选项,
对于那些确实想在其中添加更多条目的人很有用。
例如 arantius search-with-google 的这个新测试脚本。
截图:
2017-11-20_1719082017-11-20_172014


但是,对于仅将GM_registerMenuCommand用于设置的用户脚本,即您只能偶尔配置一次。
并适用于所有页面,
比如流行的:
鼠标悬停弹出图像查看器,(设置截图
YouTube 链接标题设置屏幕截图)和
Linkify Plus Plus设置截图

想象一下,安装了这些脚本,在上下文菜单顶部创建了总共 3 个条目
大多数时候不需要的:
它会使页面上的上下文菜单杂乱无章且不切实际。

然后是脚本作者,为了避免仅仅为了提供设置而使上下文菜单混乱,
他要么在每个页面上注册一个键盘快捷键(没有用户界面?)
或在每个页面上创建一个新的专用按钮元素。


因此,我想请您重新考虑在工具栏按钮弹出窗口中实现GM_registerMenuCommand ,类似于在 GM 3.x 中的方式,以及其他最常用的可用脚本管理器,Tampermonkey 和暴力猴子。
,
它会出现在“Greasemonkey is active/disabled”条目之间/下方,
以及“此选项卡的用户脚本”列表(GM 4.1 beta4)上方。

最有用的评论

所有5条评论

作为参考,我引用了https://github.com/greasemonkey/greasemonkey/issues/2559 中的相关讨论:


(八04)

_arantius 我看到 GM_registerMenuCommand 被替换为 HTML5 上下文菜单。 有没有计划在 GM 4.x 中添加它? 我找不到跟踪问题。_

(阿兰提乌斯)

_不。 Greasemonkey 的政策一直(很长一段时间)不实现“用户空间”功能。 任何脚本都可以做到这一点,或者@require类似的 polyfill 可以做到这一点。 Greasemonkey 不需要构建或支持此功能来启用脚本来使用它。 这里的重点只是做 polyfill 所做的事情:更容易更新脚本以兼容新旧版本的 Greasemonkey。_

(八04)

_我的意思是 GM4 是否还会提供一个 API 来从用户脚本管理器的 UI 执行脚本命令,比如旧的 GM_registerMenuCommand,而不是询问 GM 中是否会有 HTML5 上下文菜单 API。 GM_registerMenuCommand 通常用于启动脚本配置对话框,它不应该被填充为 HTML5 上下文菜单恕我直言。_

_BTW,几个月前我创建了一个库来使用 HTML 上下文菜单,如果它已经设置,它将重用页面上的contextmenu属性:_
_ https://github.com/eight04/GM_context_

(阿兰提乌斯)

_GM_registerMenuCommand 通常用于启动脚本配置对话框,不应将其作为 HTML5 上下文菜单进行填充,恕我直言_

_为什么不?_

(八04)

_为什么不?_

_1. 上下文菜单上的命令应该是:_

_- 适用于指定上下文(元素)的操作。 For example, when some text is selected, "Copy" command, which is an action to work with the selection, is shown._
_- 为方便起见执行指定命令的快捷方式。_
_A“我的用户脚本设置”命令不属于这两个类别。 它不依赖于上下文,也不需要使用快捷方式进行配置。_

_2、不靠谱。 它可能被页面脚本阻止/替换。_

(轻声)

_我同意概念层面的困难。 我不再有任何使用上下文菜单进行设置的扩展。 如果他们这样做,它会很快变得非常忙,因为我运行了很多扩展。_

_但我看到的主要原因是Chrome 已从规范中删除了 HTML5 上下文菜单,这意味着它可能也将从 Firefox 中删除。 我什至不知道它存在,因为我没有看到任何网站使用它。 应用程序只是自己旋转,阻止真正的上下文菜单(在大多数情况下这是一个巨大的、巨大的烦恼。这会删除功能。)_

这让我在考虑脚本如何交互时头疼。 假设有一个菜单选项,并且所述菜单选项打开了某种窗口/框/对话框/更改设置的任何内容,那么新生成的窗口是否被认为是在“内容脚本”上下文中,因此能够向扩展程序发送消息? 如果不是,那么如何将消息发送回内容脚本,以便可以更改设置?


不过,似乎一个共同的主题是设置菜单。 我赞成在元区块中有静态定义的配置字段,然后生成并可以通过 Monkey 菜单保存/修改。 与resource类似,但通过Monkey Menu -> Script -> Config -> Items进行更改。

_我赞成在元区块中有静态定义的配置字段,然后生成这些配置字段,并且可以通过 Monkey 菜单保存/修改。 类似于资源,但通过 Monkey Menu -> Script -> Config -> Items._ 进行更改

我担心在元区块中使用静态配置字段会使其过于局限:
例如,对于第一个提到的脚本Mouseover Popup Image Viewer
除了当前的实用布局(下拉菜单、复选框、带滚动条的文本框、文本区域),
设置菜单目前提供:

  • 导入/导出设置(到剪贴板),
  • 在设置中从 MPIV 存储库安装规则,
  • 当安装了很多自定义主机规则时,就会有按类型查找规则,
  • 验证输入的自定义主机规则是否是有效的 JSON,如果不是,则将输入行突出显示为红色,

另外,它的作者应该重写整个“设置代码”。

settings screenshot

@legnaleurc天哪,这对某些人来说可能是个问题。 作为一个外行,我不知道,但是您是否碰巧知道添加上下文菜单项的替代方法,以替换使用的方法

? 是否有一些我不知道可以从用户脚本中使用的简单方法?
此页面是否有帮助?
0 / 5 - 0 等级