【问题标题】:Sharing variables between 2 separate scripts [duplicate]在两个单独的脚本之间共享变量[重复]
【发布时间】:2023-05-06 01:10:01
【问题描述】:

我正在尝试在 2 个单独的选项卡中运行的 2 个不同 Tampermonkey 脚本之间共享变量。

我尝试在一个脚本中使用 GM_setValue,然后在另一个脚本中使用 GM_getValue 检索它,但没有成功,所以我假设每个脚本都有单独的存储空间。

有什么简单的方法可以做到这一点吗?我只是缺少一些简单的东西吗?我可以让两个脚本共享同一个存储空间吗?

【问题讨论】:

  • 合并脚本,然后脚本可以使用GM_setValue在实例之间进行通信。或使用消息传递;见*.com/questions/11769066/…

标签: javascript variables greasemonkey userscripts tampermonkey


【解决方案1】:

是的,你可以。您可以使用localStorage,也可以使用服务器上的数据库并使用AJAX 获取/设置值。

【讨论】:

  • 我应该提到两个脚本都在不同的域上运行,所以 localStorage 不起作用。我不想将服务器用于如此简单的事情,除非它真的是唯一的方法,我确信必须有一种方法可以在本地完成。
  • 不,其实这没那么简单。想象一下 Site1 和 Site2 由不同的人拥有的情况。如果 Site1 的工作人员可以访问 Site2 使用的脚本,则无法保证他们不会窃取 Site2 的数据。出于安全原因,您需要使用服务器。
  • 我了解普通脚本的安全原因,但由于它是在沙盒环境中运行的用户脚本,而不是直接在页面上下文中运行,我希望有办法在 Tampermonkey 中做到这一点
  • 浏览器一般不知道是否在沙箱中。您也可以在用户脚本中包含敏感数据。例如,如果有登录时间戳,则另一个网站的所有者不应该知道您何时登录到另一个网站,除非他被允许。如果您将离线版本存储在 localStorage 中以使您即使在没有连接到 Internet 的情况下也可以使用某些功能怎么办?我应该能够读取您所有的离线数据(用户名、私人消息等)吗?
  • 但是如果localStorage是无望的,因为它不安全,不可靠,可更改,你不想连接到服务器?