【问题标题】:Tampermonkey doesn't fetch @require using localhost HTTPS static filesTampermonkey 不使用 localhost HTTPS 静态文件获取 @require
【发布时间】: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


【解决方案1】:

我也在 Tampermonkey 存储库上创建了一个 GitHub issue,并且有人想出了解决方案:

将“外部”更新频率设置为“始终”。这将在页面重新加载时获取@require 标记。然而,这并不能顺利运行,并且大多数情况下它会在页面重新加载后获取 (因此您必须重新加载两次)。

无论如何,这为我解决了问题。

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多