cross-domain - Tampermonkey 是否可以在不同的网站上共享一个存储空间?
问题描述
与此类似,但有更多细节。
- “共享”预计将由一个脚本完成。
- “存储”是哪个
GM_{g,s}etValue
用途。 - “不同的网站”是指来源不同的网站。
我现在的方案:
- 在网站 A 上,我插入了网站 B 的 iframe,并通过
postMessage
.
我得到的信息:
- 由此看来,Tampermonkey 曾经支持跨域共享数据。
解决方案
如 wOxxOm 所述,为了让 2 个域通过 GM 存储 API 共享数据,脚本必须在两个域上运行,例如通过@match
.
但是,在 Tampermonkey 中,域将在注入脚本时访问数据。
更新:正如 wOxxOm 所指出的,“ Tampermonkey/Violentmonkey 都提供对真实值的实时访问。他们通过将更改传播到运行此脚本实例的所有选项卡/框架来实现。 ”
您还可以使用GM_addValueChangeListener()
来收听对存储的更改。
GM_addValueChangeListener()
将更改监听器添加到存储并返回监听器 ID。
'name' 是观察到的变量的名称。
回调函数的 'remote' 参数显示此值是从另一个选项卡的实例 (true) 还是在此脚本实例 (false) 中修改的。
因此,不同浏览器选项卡的脚本可以使用此功能相互通信。
注意:在 Greasemonkey 和 FireMonkey 中,异步GM.getValue()
总是会获取当前最新的数据。
推荐阅读
- c++ - 构建错误“没有用于调用 'sg_ofstream::open(const wchar_t*, std::ios_base::openmode&) 的匹配函数”
- powershell - 如何使用 txt 列表复制文件以定义文件名的开头
- c++ - 如何使用递归函数返回数组中整数的索引?
- java - 有没有办法检测手机指纹上的手指触摸?
- powershell - 无法替换字符串中的“$”
- java - Period.between 不包括 Java 中的最后一天
- reactjs - 背景颜色和边框半径属性在 React Native 中无法协同工作 - Android
- android - 获取 jsonArray for 循环之外的值
- jenkins - 在管道作业中,如何使用他们选择的参数构建自由式下游作业?
- kubernetes - helm 中嵌入的 tpl 语句