GM 4.1 中的strict_min_version
是52.0
。 这会导致人们使用支持遗留扩展(例如 FF56 和 52ESR)的 Firefox 版本“升级”到 4.1。 许多使用 FF 52ESR 或继续使用 FF55/56 的人正在这样做,以便他们能够继续使用旧版扩展。
Greasemonkey 的旧版本比 4.x 版本更实用,而且永远都是。 运行 Firefox < FF57 版本的人不应自动“升级”到 Greasemonkey 4.x。
因此, manifest.json应该有:
"strict_min_version": "57.0"
虽然用户可以选择禁用 GM 或一般扩展的自动更新(即这个strict_min_version
设置可以在配置文件的基础上解决),但 GM4 并不是真正的“升级”。 大多数用户认为这是降级。 用户在使用 GM4 时不应自动升级到 GM4,因为他们使用的 Firefox 版本不支持旧版扩展。
我认为最低版本设置是3.x版本嵌入WebExtension以方便脚本迁移的时间段的神器。 如果不降低它,我不相信插件会正确安装。
4.1 以较低的最低版本推送,_oops?_。 我不认为这样做是为了“故意强迫”人们使用 4.x,并且帖子中的敌意是不必要的。
@Sxderp没有敌意。 我很抱歉听起来是那样的。 即使重新阅读我写的内容,我也不完全确定您认为哪个部分是敌对的。 所以,我编辑了它,猜测(部分)你觉得什么是令人反感的。
请注意,虽然我确实说“强制”(我只是想描述用户会发生什么),但我没有说“故意强制”(这表明我在设置背后有一些意图,我是不想做)。 [你让我第二次猜测自己。 我不认为我说的是“故意强迫”,但现在我已经编辑了原始评论,我无法 100% 验证它,因为作为帖子的作者,我没有收到包含内容的电子邮件。 如果我这样做了,我很抱歉。 这不是故意的。]
注意:虽然我确实对 Mozilla 对 WebExtensions-only 的切换持负面看法,但我觉得参与 GM 的人很好地处理了 Mozilla 将他们置于其中的情况。 这包括必须与大量指责扩展编写者的人打交道,这完全是 Mozilla 的错。
哎呀,我已经在 v56 上“冻结”了我的 FF,现在使用 GM4.1,我在非常简单的脚本上遇到了一些模糊的错误,比如"Error: Permission denied to access property "nodeType""
。
我遇到了一些晦涩的错误,例如
用户脚本在“内容脚本”上下文中运行。 如果在此上下文中声明对象/函数,则需要将它们克隆到窗口,然后窗口才能访问它们。 Mozilla 实现了这个安全功能,它可以防止泄漏到页面范围内。
@Sxderp是的,我已经在更新说明中读到unsafeWindow
的工作方式有所不同,应该使用exportFunction() or cloneInto()
并链接您所做的同一篇文章(它解释了如何编写扩展,而不是用户脚本))。 没有人给出任何示例如何在用户脚本中实际做到这一点。 但这不是重点。 关键是 FF<=56 不会受到整个延迟的影响,因此没有理由强迫它。
没有人给出任何示例如何在用户脚本中实际做到这一点。
几乎完全一样。 如果有人说“内容脚本”,请将其替换为“用户脚本”。 照常进行。
例如,这是我前段时间发布的内容。
此外,如果您使用window.eval()
,则该参数将直接在页面范围内运行,而无需处理导出。
谢谢。 至于eval()
- eval 是邪恶的,使用 eval 的第一条规则是“不要使用 eval”。
@Spown IMO, exportFunction()
和cloneInto()
应该避免,因为它们只是 Firefox。 用户脚本和 WebExtensions 的一个显着好处是它们可以在各种不同的浏览器中运行。 您可以通过多种方式在页面上下文中执行代码。 我在用户脚本和内容脚本中执行此操作的方式是一个函数executeInPage()
,您可以在 Stack Overflow 上的这个答案中找到它。 它允许您将参数传递给您正在调用的函数,将这些参数克隆到页面上下文中。 使用一个简单的函数,将传递给窗口上下文中的变量的参数值赋值(例如window[variableName]
),您可以轻松地完成cloneInto()
所做的事情。
它不如cloneInto()
灵活,因为它只处理Object
、 Array
、 function
、 RegExp
、 Date
和/或其他原语( Boolean
、 null
、 undefined 、 Number
和String
,但不是Symbol
)。
@Sxderp这一切可能都是真的,但我真的不在乎,因为我选择不通过不更新到 FF>56 来参与整个事情。 但它仍然像在这种情况下一样渗透。
顺便说一句,像您在示例中所做的那样,尝试在我的脚本中重用页面的 jQuery(返回上述错误)仍然会产生相同的错误。 非易失性
我认为动力在于您安装所需的 Greasemonkey 版本,然后关闭自动更新。
如果我升级到 Greasemonkey 4,是否可以安装 Greasemonkey 3 来降级并继续使用它,如果我愿意的话? 还是 Greasemonkey 4 做出了不可逆转的改变?
@garyking你应该可以毫无问题地降级。 脚本文件应该保留。
最有用的评论
我认为动力在于您安装所需的 Greasemonkey 版本,然后关闭自动更新。