Задача может быть решена очень просто, если выполняется одно условие - каждая страница имеет свой уникальный идентификатор. У меня есть этот $ ("body"). Attr ("id").
Давайте вызовем функцию noDuplicateTabs и будем вызывать ее каждый раз при запуске страницы.
Мы используем localStorage:
let noDuplicateTabs = function (pageName) {
localStorage.getItem(pageName)
? window.close()
: localStorage.setItem(pageName, 'open');
window.onbeforeunload = function () {
localStorage.setItem(pageName, '');
};
}
Таким образом, мы передаем имя страницы в функцию, проверяем наличие значения, используя ключ localStorage, соответствующий имени страницы.
Если ключ с непустым значением найден, то мы закрываем страницу, если нет, то записываем значение в нее «open».
Мы также используем свойство onbeforeunload окна, которое работает до перезагрузки или закрытия страницы. В этом случае мы удалим значение.
Теперь в одном браузере не будет дубликатов.