cross-browser-tab
Version:
cross browser tabs
34 lines (32 loc) • 995 B
JavaScript
/**
*user: raojianbing
*date: 2018-3-7 21:08
*/
function CrossBrowserTab (init) {
this.keys = init.keys
this.listener = init.listener
this.tabName = '' + (new Date()).getTime() + Math.floor(Math.random() * 10000)
this.addStorageListener()
}
CrossBrowserTab.prototype.emitter = function(key, value) {
localStorage[key] = JSON.stringify({
tabName: this.tabName,
value: value
})
};
CrossBrowserTab.prototype.addStorageListener = function () {
var _this = this;
window.addEventListener('storage', function (event) {
var e = {
tabName: JSON.parse(event.newValue).tabName,
url: event.url,
key: event.key,
newValue: JSON.parse(event.newValue).value,
oldValue: JSON.parse(event.oldValue || {}).value
}
var indexFn = _this.keys.indexOf(event.key)
_this.listener[indexFn](e)
});
}
var crossBrowserTab = new CrossBrowserTab();
export default crossBrowserTab