当前位置: 首页 > news >正文

油猴实现 全局变量 跨标签页共享变量 的方法

需求

从页面A获取到数据,但是在跳转到页面B后数据则消失。所以希望能够跨标签共享变量。

思路

使用GM_setValueGM_getValue来实现。

介绍

官方定义:

GM_setValue(name, value)
Set the value of 'name' to the storage.

GM_getValue(name, defaultValue)
Get the value of 'name' from storage.

详细wiki: GM.setValue - GreaseSpot Wiki

使用

首先在脚本开头加上这两行

// @grant        GM_setValue
// @grant        GM_getValue

之后看个例子

(function() {
    'use strict';

    // Your code here...
    var a = {
        'name': '兔子昂'
    };

    GM_setValue('zw_test', a);
    console.log(GM_getValue('zw_test'));
    console.log(GM_getValue('zw_test').name);
})();

Chrome 的 console 输出

{name: "兔子昂"}
兔子昂

说明可以方便的将对象存储,并读取,非常方便。

扩展

GM_setValue 将数据存储在哪里?
存储在 Chrome 内置的 LevelDB 中。

多个 Chrome 同时开启是否会导致 GM_setValue 对同一个 key 相互覆盖?

在 Chrome A 实例下 set value A, 然后在 Chrome B 实例下 get value A。
会发现 Chrome B 读出来的结果是 undefined。
可以放心使用了。


参考:
Tampermonkey 数据存储之 GM_setValue / GM_getValue - Tampermonkey - 大象笔记

相关文章:

  • CodeCopy —— 用于Typecho 复制代码 插件
  • Invalid bound statement的一个解决方法
  • 阿里巴巴druid怎么读
  • java只有按值传递 没有引用传递
  • Typecho Fancybox 给文章图片添加灯箱效果
  • an error occured while loading the archive
  • 电脑无限循环cmd代码 Window系统下死循环
  • python 实现批量 csv文件 转化为 execl...
  • js 搜索子字符串 判断是否是子串 的方法
  • 禁用css 的浏览器插件 Web Developer
  • Baconian (Stegano, Encoding, C..的解法
  • mac直接修改压缩包
  • servlet获取ApplicationContext容器对象
  • org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[createStandardContext]时发生异常
  • java.lang.ClassNotFoundException: org.springframework.context.support.ClassP
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • css系列之关于字体的事
  • Java Agent 学习笔记
  • Java应用性能调优
  • Mac转Windows的拯救指南
  • MySQL主从复制读写分离及奇怪的问题
  • Sublime text 3 3103 注册码
  • Vue学习第二天
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 服务器之间,相同帐号,实现免密钥登录
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 如何设计一个比特币钱包服务
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • Hibernate主键生成策略及选择
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​iOS实时查看App运行日志
  • ​linux启动进程的方式
  • ​第20课 在Android Native开发中加入新的C++类
  • #pragma预处理命令
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (剑指Offer)面试题34:丑数
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ... 是什么 ?... 有什么用处?
  • .a文件和.so文件
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NetCore 如何动态路由
  • .NetCore项目nginx发布
  • .NET建议使用的大小写命名原则
  • .Net语言中的StringBuilder:入门到精通
  • .net中调用windows performance记录性能信息
  • //解决validator验证插件多个name相同只验证第一的问题
  • /etc/sudoers (root权限管理)
  • @angular/cli项目构建--http(2)
  • @EnableWebMvc介绍和使用详细demo
  • @Mapper作用