【问题标题】:Is it possible for Tampermonkey to share one storage on different websites?Tampermonkey 是否可以在不同的网站上共享一个存储空间?
【发布时间】:2021-07-17 04:11:02
【问题描述】:

类似于this,但有更多细节。

  • “共享”预计由一个脚本完成。
  • “存储”是GM_{g,s}etValue 使用的。
  • “不同的网站”是指来源不同的网站。

我现在的计划:

  • 在A网站,我插入B网站的iframe,通过postMessage同步存储。

我得到的信息:

  • this看来,Tampermonkey 曾经支持跨域共享数据。

【问题讨论】:

  • 只需为两个 URL(页面和 iframe)添加 @match,这样存储空间将自动相同,more info
  • @wOxxOm 我试过了,但是真的不行。
  • 现在可以使用了。这是我的存储包装出错了。谢谢! @wOxxOm

标签: cross-domain tampermonkey


【解决方案1】:

正如 wOxxOm 所述,为了让 2 个域通过 GM 存储 API 共享数据,脚本必须在两个域上运行,例如通过@match

但是,在 Tampermonkey 中,域将在脚本被注入时访问数据。

更新:正如 wOxxOm 所指出的,“Tampermonkey/Violentmonkey 都提供对真实值的实时访问。他们通过将更改传播到所有标签/框架来实现这一点脚本实例运行。"

您也可以使用GM_addValueChangeListener() 来监听存储的变化。

GM_addValueChangeListener()
向存储中添加更改侦听器并返回侦听器 ID。
'name' 是观察变量的名称。
回调函数的 'remote' 参数显示此值是从另一个选项卡的实例 (true) 还是在此脚本实例 (false) 中修改的。
因此,不同浏览器选项卡的脚本可以使用此功能相互通信。

注意:在 Greasemonkey 和 FireMonkey 中,异步的 GM.getValue() 将始终获取当前最新的数据。

【讨论】:

  • Tampermonkey/Violentmonkey 都提供对真实值的实时访问。他们通过将更改传播到运行此脚本实例的所有选项卡/框架来做到这一点。
猜你喜欢
  • 2018-02-05
  • 2013-04-15
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
相关资源
最近更新 更多