无法识别 GM 脚本中的本地 CSS 资源
Local CSS resource in GM script not recognized
我有一个包含以下内容的 GM 脚本:
...
// @grant GM_addStyle
...
// @resource css my.css
...
GM_addStyle(GM_getResourceText('css')) // the error occurs here
...
GM 最近从 config.xml
(偶尔发生)中删除了这个脚本,所以:
- 我将脚本文件夹重命名为
/*.OLD
、
- 创建了一个同名的新脚本,
- 已将
*.OLD
中的所有文件(*.css
等)复制到新脚本文件夹,但脚本文件 (<name>.user.js
) 本身除外,
- C&P 代码从
/*.OLD/<name>.user.js
到新创建的脚本文件。
现在它再次运行但抛出:
Error: No resource with name "css"
这是为什么?资源是上面声明的并且它存在在脚本的文件夹中。 (声明和实际文件名之间也没有 upper/lower 大小写差异。)
更新
Windows 7 Prof. SP 1(64 位),FF 56.0.2(64 位),GM 3.17
Greasemonkey,第 4 版之前的版本,不只是遵循 xml 文件。它还使用了一个 *.db
文件,并在启动时扫描了脚本文件夹。多年来一直没有必要弄乱任何一个配置文件。
无论如何,问题中的方法几乎是重新安装不适用于该 GM 版本的脚本的唯一方法。您通常不能只将 @require
或 @resource
复制回损坏的配置。 Greasemonkey 仍然很困惑。
这应该可以解决问题:
- 将所有必需的 local 文件从有问题的脚本目录复制到既不在系统临时路径中也不在 gm_scripts 文件夹中的工作目录。
我建议使用文件夹树或 Git 存储库等来 preserve/track Firefox 外部的脚本。
- 使用 Greasemonkey 的脚本管理器,卸载旧脚本(如果存在)。
- 关闭 Firefox。使用任务管理器确保没有 Firefox 进程留在内存中。
- 在包含
*.user.js
文件的工作文件夹中,确保所有 @require
d 或 @resource
d、 的文件本地,存在。
如果 @require
或 @resource
路径指向可行的服务器路径,则该文件不需要在本地驱动器上(Greasemonkey 将在脚本安装时重新获取它一次)。
- 重新启动 Firefox。
- 从 windows 资源管理器中,将
*.user.js
文件拖放到 Firefox 上。这应该会提示它安装脚本。
- 确认安装后,Firefox 将正确复制本地文件(并获取任何网络文件)并且脚本应该 运行 正确。
额外功劳:由于 当前 版本的 Firefox (57+) 和 Greasemonkey (4+) 严重瘫痪和功能失调,请考虑迁移到 Tampermonkey 和更好的浏览器。事实上,Greasemonkey itself recommends migrating to Tampermonkey or Violentmonkey.
到目前为止,我发现 the UR Browser 是最具扩展性和稳定性的,没有 Chrome 的邪恶 "grabbyness"。 (Opera 打破更多 scripts/extensions;Vivaldi 很有前途但有缺陷;其他人有各种各样的问题。)
我有一个包含以下内容的 GM 脚本:
...
// @grant GM_addStyle
...
// @resource css my.css
...
GM_addStyle(GM_getResourceText('css')) // the error occurs here
...
GM 最近从 config.xml
(偶尔发生)中删除了这个脚本,所以:
- 我将脚本文件夹重命名为
/*.OLD
、 - 创建了一个同名的新脚本,
- 已将
*.OLD
中的所有文件(*.css
等)复制到新脚本文件夹,但脚本文件 (<name>.user.js
) 本身除外, - C&P 代码从
/*.OLD/<name>.user.js
到新创建的脚本文件。
现在它再次运行但抛出:
Error: No resource with name "css"
这是为什么?资源是上面声明的并且它存在在脚本的文件夹中。 (声明和实际文件名之间也没有 upper/lower 大小写差异。)
更新
Windows 7 Prof. SP 1(64 位),FF 56.0.2(64 位),GM 3.17
Greasemonkey,第 4 版之前的版本,不只是遵循 xml 文件。它还使用了一个 *.db
文件,并在启动时扫描了脚本文件夹。多年来一直没有必要弄乱任何一个配置文件。
无论如何,问题中的方法几乎是重新安装不适用于该 GM 版本的脚本的唯一方法。您通常不能只将 @require
或 @resource
复制回损坏的配置。 Greasemonkey 仍然很困惑。
这应该可以解决问题:
- 将所有必需的 local 文件从有问题的脚本目录复制到既不在系统临时路径中也不在 gm_scripts 文件夹中的工作目录。
我建议使用文件夹树或 Git 存储库等来 preserve/track Firefox 外部的脚本。 - 使用 Greasemonkey 的脚本管理器,卸载旧脚本(如果存在)。
- 关闭 Firefox。使用任务管理器确保没有 Firefox 进程留在内存中。
- 在包含
*.user.js
文件的工作文件夹中,确保所有@require
d 或@resource
d、 的文件本地,存在。
如果@require
或@resource
路径指向可行的服务器路径,则该文件不需要在本地驱动器上(Greasemonkey 将在脚本安装时重新获取它一次)。 - 重新启动 Firefox。
- 从 windows 资源管理器中,将
*.user.js
文件拖放到 Firefox 上。这应该会提示它安装脚本。 - 确认安装后,Firefox 将正确复制本地文件(并获取任何网络文件)并且脚本应该 运行 正确。
额外功劳:由于 当前 版本的 Firefox (57+) 和 Greasemonkey (4+) 严重瘫痪和功能失调,请考虑迁移到 Tampermonkey 和更好的浏览器。事实上,Greasemonkey itself recommends migrating to Tampermonkey or Violentmonkey.
到目前为止,我发现 the UR Browser 是最具扩展性和稳定性的,没有 Chrome 的邪恶 "grabbyness"。 (Opera 打破更多 scripts/extensions;Vivaldi 很有前途但有缺陷;其他人有各种各样的问题。)