JSFiddle - React, Tailwind, and code Playground
by shapeshifta
Babel + JSX
class Trackor {
constructor() {
if (sessionStorage.tabId && sessionStorage.closedLastTab !== false) {
this.tabId = sessionStorage.tabId;
} else {
let tabId = this.uuid();
this.tabId = tabId;
sessionStorage.tabId = tabId;
}
}
uuid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
set tabId(id) {
if (!sessionStorage.tabId) {
sessionStorage.tabId = id;
} else {
console.log('tab id already set');
}
}
get tabId() {
return this.tabId = sessionStorage.tabId;
}
}
sessionStorage.clear();
console.log(sessionStorage.tabId);
let trackor = new Trackor();
console.log(sessionStorage.tabId);
console.log(trackor.tabId);
console.log(trackor.tabId);
console.log(sessionStorage.tabId);
sessionStorage.closedLastTab = false;
// tab was duplicated
$(window).on('unload beforeunload', function() {
sessionStorage.closedLastTab = true;
});