UNPKG

cross-browser-tab

Version:
34 lines (32 loc) 995 B
/** *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