Tampermonkey 不使用本地 HTTPS 静态文件获取 @require
Tampermonkey doesn't fetch @require using localhost HTTPS static files
预期行为
为了简化开发,我想通过本地主机 HTTP(S) 服务器提供必要的 TM @require
文件。我希望在每次重新加载页面时重新加载这些文件。
实际行为
当我在 TM 编辑器中更新 UserScript 时,这些文件是从本地主机服务器获取的,但是,当加载匹配的 URL 时,它们不会被获取。我不确定这是 TM 缓存的东西还是我这里做错了什么。
规格
- 火狐 91.0.2
- TM: 4.13.6136
- OS: Windows 10
- 匹配URL:所有 LinkedIn 页面
脚本
为了分离 JS 文件中的关注点,UserScript header 与其他逻辑分离。使用@required 导入必要的文件。这是粘贴在 TM 编辑器中的 UserScript 文件的内容:
// ==UserScript==
// @name myName
// @description myDescription
// @author robinlarondelle
// @version 0.1
// @namespace myNameSpace
// @homepage myHomePage
// @include *linkedin.com/*
// @icon https://www.google.com/s2/favicons?domain=linkedin.com
// @grant window.onurlchange
// @require https://localhost:3000/public/myScript.user.js
// ==/UserScript==
localhost HTTPS 静态文件服务器是一个 Node.JS 服务器,带有启用 HTTPS 的自签名证书。在提供我的 .pem
文件后使用 Postman 和 FireFox 时,服务器按预期工作。如有必要,我可以提供有关服务器的更多详细信息,但我认为问题不在于此。
需要指出的事情:
FireFox 禁止从 TM 访问本地文件(参见此 comment)。所以这个问题的一个替代方法是只使用 Chrome,因为它支持访问本地文件。但是,我想避免使用本地文件,因为有多个开发人员在处理这个项目。我也不想将开发限制在一种特定的浏览器上。
主要的 question/problem 是:为什么 @require
来自 UserScript header 只在 TM 编辑器中的脚本保存中获取所需的文件,而不是在页面重新加载时 URL匹配?这是正常行为 and/or 我们可以关闭它吗?
我也在 Tampermonkey 存储库上创建了一个 GitHub issue,有人提出了解决方案:
将“外部”更新频率设置为“始终”。这将在页面重新加载时获取 @require
标记。然而,这并不 运行 顺利,大多数时候它将在 页面重新加载后 获取(因此你必须重新加载两次)。
无论如何,这解决了我的问题。
预期行为
为了简化开发,我想通过本地主机 HTTP(S) 服务器提供必要的 TM @require
文件。我希望在每次重新加载页面时重新加载这些文件。
实际行为
当我在 TM 编辑器中更新 UserScript 时,这些文件是从本地主机服务器获取的,但是,当加载匹配的 URL 时,它们不会被获取。我不确定这是 TM 缓存的东西还是我这里做错了什么。
规格
- 火狐 91.0.2
- TM: 4.13.6136
- OS: Windows 10
- 匹配URL:所有 LinkedIn 页面
脚本
为了分离 JS 文件中的关注点,UserScript header 与其他逻辑分离。使用@required 导入必要的文件。这是粘贴在 TM 编辑器中的 UserScript 文件的内容:
// ==UserScript==
// @name myName
// @description myDescription
// @author robinlarondelle
// @version 0.1
// @namespace myNameSpace
// @homepage myHomePage
// @include *linkedin.com/*
// @icon https://www.google.com/s2/favicons?domain=linkedin.com
// @grant window.onurlchange
// @require https://localhost:3000/public/myScript.user.js
// ==/UserScript==
localhost HTTPS 静态文件服务器是一个 Node.JS 服务器,带有启用 HTTPS 的自签名证书。在提供我的 .pem
文件后使用 Postman 和 FireFox 时,服务器按预期工作。如有必要,我可以提供有关服务器的更多详细信息,但我认为问题不在于此。
需要指出的事情:
FireFox 禁止从 TM 访问本地文件(参见此 comment)。所以这个问题的一个替代方法是只使用 Chrome,因为它支持访问本地文件。但是,我想避免使用本地文件,因为有多个开发人员在处理这个项目。我也不想将开发限制在一种特定的浏览器上。
主要的 question/problem 是:为什么 @require
来自 UserScript header 只在 TM 编辑器中的脚本保存中获取所需的文件,而不是在页面重新加载时 URL匹配?这是正常行为 and/or 我们可以关闭它吗?
我也在 Tampermonkey 存储库上创建了一个 GitHub issue,有人提出了解决方案:
将“外部”更新频率设置为“始终”。这将在页面重新加载时获取 @require
标记。然而,这并不 运行 顺利,大多数时候它将在 页面重新加载后 获取(因此你必须重新加载两次)。
无论如何,这解决了我的问题。