realtime-sync-storage
Version:
Cross-origin local storage realtime synchronizing.
47 lines • 1.81 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<title>sync</title>
<script>
(function () {
'use strict';
var isListen = false;
window.onload = function () {
window.addEventListener('message', function (e) {
if (e.origin !== e.data.origin) return;
var data = e.data,
d = data.localStorage,
keys = data.sync,
origin = e.origin,
isLimitKey = Object.prototype.toString.call(keys) === "[object Array]" && keys.length > 0;
if (isLimitKey) {
for (var i = 0, j = keys.length; i < j; i++) {
if (d[keys[i]] !== void 0 && d[keys[i]] !== null) {
window.localStorage[keys[i]] = d[keys[i]];
} else {
window.localStorage.removeItem(keys[i]);
}
}
} else {
for (var key in d) {
window.localStorage[key] = d[key];
}
}
data.removeKey && window.localStorage.removeItem(data.removeKey);
if (data.mutual && !isListen) {
window.addEventListener('storage', function (e) {
var lS = {};
lS[e.key] = e.newValue;
window.parent.postMessage(lS, origin);
});
}
isListen = true;
});
};
})();
</script>
</head>
<body>
</body>
</html>