您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Global Storage
- // ==UserScript==
- // @name Global Session Storage
- // @namespace http://legitspam.edu/
- // @version 0.21
- // @description Global Storage
- // @match *://*/*
- // @require http://code.jquery.com/jquery-latest.js
- // @author http://blog.guya.net/2015/06/12/sharing-sessionstorage-between-tabs-for-secure-multi-tab-authentication/
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
- var sessionStorage_transfer = function(event) {
- if(!event) { event = window.event; } // ie suq
- if(!event.newValue) return; // do nothing if no value to work with
- if (event.key == 'getSessionStorage') {
- // another tab asked for the sessionStorage -> send it
- localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
- // the other tab should now have it, so we're done with it.
- localStorage.removeItem('sessionStorage'); // <- could do short timeout as well.
- } else if (event.key == 'sessionStorage' && !sessionStorage.length) {
- // another tab sent data <- get it
- var data = JSON.parse(event.newValue);
- for (var key in data) {
- sessionStorage.setItem(key, data[key]);
- }
- }
- };
- // listen for changes to localStorage
- if(window.addEventListener) {
- window.addEventListener("storage", sessionStorage_transfer, false);
- } else {
- window.attachEvent("onstorage", sessionStorage_transfer);
- };
- // Ask other tabs for session storage (this is ONLY to trigger event)
- if (!sessionStorage.length) {
- localStorage.setItem('getSessionStorage', 'foobar');
- localStorage.removeItem('getSessionStorage', 'foobar');
- };