【发布时间】:2021-09-14 06:13:35
【问题描述】:
预期行为
为了简化开发,我想通过 localhost HTTP(S) 服务器提供必要的 TM @require 文件。我希望在每次重新加载页面时重新加载这些文件。
实际行为
当我在 TM 编辑器中更新用户脚本时,这些文件是从本地主机服务器获取的,但是,当加载匹配的 URL 时,它们不会被获取。我不确定这是 TM 的缓存还是我在这里做错了什么。
规格
- 火狐 91.0.2
- TM:4.13.6136
- 操作系统:Windows 10
- 匹配的 URL:所有 LinkedIn 页面
脚本
为了分离 JS 文件中的关注点,UserScript 标头与其他逻辑分离。使用@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 静态文件服务器是一个带有自签名证书以启用 HTTPS 的 Node.JS 服务器。在提供我的.pem 文件后使用 Postman 和 FireFox 时,服务器按预期工作。如有必要,我可以提供有关服务器的更多详细信息,但我认为问题不在于这里。
注意事项:
FireFox 禁止从 TM 访问本地文件(参见 comment)。因此,解决此问题的一种方法是仅使用 Chrome,因为它确实支持访问本地文件。但是,我想避免使用本地文件,因为有多个开发人员在这个项目上工作。我也不想将开发限制在一种特定的浏览器上。
主要问题/问题是:为什么来自 UserScript 标头的@require 仅在 TM 编辑器中的 Script Save 上获取所需的文件,而不是在 URL 匹配时在 Page Reload 上获取所需的文件?这是正常行为和/或我们可以将其关闭吗?
【问题讨论】:
-
缓存
require/resource并偶尔更新它们是所有用户脚本管理器的正常行为。您可以建议 Tampermonkey 的作者为 localhost URL 实现异常。
标签: javascript node.js https tampermonkey