来自@require 脚本的@grant GM 函数
@grant GM functions from @require'd script
我正在编写一系列 Greasemonkey 脚本。这些脚本共享它们的大部分功能,因此我认为提取共同功能很有用。
在common.js
中是共同的特征,他们称之为GM_functions(例如GM.xmlHttpRequest
)。每个用户脚本 @require [...]/common.js
有没有办法避免在每个 script.user.js
中重复所有元数据:
// @require [...]/common.js
// @grant GM.getResourceText
// @grant GM.xmlHttpRequest
// @grant GM.setValue
// @grant GM.getValue
// @connect localhost
// @resource styleSheet [...]/style.css
?
我试图在 common.js
中 @grant
(或称其为 common.user.js
),但 Greasemonkey 似乎无论如何都会忽略它。
我知道这可以被认为是一个安全漏洞,因为由于 @require 的级联 @grants,您可能不知道最终授予了哪些特权。然而,Greasemonkey 可以从逻辑上推断出所有 @required 脚本的最终权限。
我对 @resource
有同样的问题。
这不太可能发生。
- 对它的需求很少。
- 更不需要了。
这将是一个巨大的安全问题:
- 各种引擎已经在努力提醒用户脚本正在尝试做什么邪恶的事情——而且大多数用户无论如何都会忽略它。
- 确保以前良好的
@require
d 文件没有损坏。大多数引擎和脚本甚至不首先检查 subsource integrity(散列)。如果 @require
s 可以更改元数据,情况会更糟十倍。
- 仅确定最终权限可能是一个挑战。在此之前,所有用户脚本引擎都有更多 important/urgent 代码需要编写。
我理解以模块化和 DRY 方式编码的愿望,但超级强大的 @require
文件不是答案。
您或许可以设置您的构建环境 (EG Git) 以自动为某些 @require
d 文件添加 @grant
s组装最终的 .user.js
文件。
如果您没有这样的 build/source 跟踪环境,那么无论如何您都 courting disaster 拥有超级动力(或任何)模块。
我正在编写一系列 Greasemonkey 脚本。这些脚本共享它们的大部分功能,因此我认为提取共同功能很有用。
在common.js
中是共同的特征,他们称之为GM_functions(例如GM.xmlHttpRequest
)。每个用户脚本 @require [...]/common.js
有没有办法避免在每个 script.user.js
中重复所有元数据:
// @require [...]/common.js
// @grant GM.getResourceText
// @grant GM.xmlHttpRequest
// @grant GM.setValue
// @grant GM.getValue
// @connect localhost
// @resource styleSheet [...]/style.css
?
我试图在 common.js
中 @grant
(或称其为 common.user.js
),但 Greasemonkey 似乎无论如何都会忽略它。
我知道这可以被认为是一个安全漏洞,因为由于 @require 的级联 @grants,您可能不知道最终授予了哪些特权。然而,Greasemonkey 可以从逻辑上推断出所有 @required 脚本的最终权限。
我对 @resource
有同样的问题。
这不太可能发生。
- 对它的需求很少。
- 更不需要了。
这将是一个巨大的安全问题:
- 各种引擎已经在努力提醒用户脚本正在尝试做什么邪恶的事情——而且大多数用户无论如何都会忽略它。
- 确保以前良好的
@require
d 文件没有损坏。大多数引擎和脚本甚至不首先检查 subsource integrity(散列)。如果@require
s 可以更改元数据,情况会更糟十倍。 - 仅确定最终权限可能是一个挑战。在此之前,所有用户脚本引擎都有更多 important/urgent 代码需要编写。
我理解以模块化和 DRY 方式编码的愿望,但超级强大的 @require
文件不是答案。
您或许可以设置您的构建环境 (EG Git) 以自动为某些 @require
d 文件添加 @grant
s组装最终的 .user.js
文件。
如果您没有这样的 build/source 跟踪环境,那么无论如何您都 courting disaster 拥有超级动力(或任何)模块。