В 2013 году я написал фрагмент кода, который запрещает пользователю открывать вторую вкладку браузера в том же домене, и это прекрасно работало до года назад.Он основан на событии «хранилище», которое должно запускаться при записи второго окна в localStorage.Это код:
$(function(){
var this_tab_key = randomString(30);
var listener = function(e){
if(e.key=='test_block' && e.newValue != this_tab_key)
{
STOP_AJAX_CALLS = true;
var div = $('<div id="modal_block" style="top:0px;left:0px;position:absolute;width:100%;height:100%;opacity:0.5;background-color:black;z-index:12000"></div>');
div.append('<div style="position:absolute;top:50%;left:0;width:100%;font-size:60px;margin-top:-50px;text-align:center;line-height:50px;" >Please close this tab/windows <br>as another one has been opened</div>');
$("body").append(div);
if (window.removeEventListener)
window.removeEventListener("storage", listener);
else
window.detachEvent("onstorage", listener);
}
};
if (window.addEventListener)
window.addEventListener("storage", listener);
else
window.attachEvent("onstorage", listener);
localStorage.setItem('test_block', this_tab_key);
});
В последнее время происходит то, что событие «хранилище» запускается, даже если у меня открыта только вкладка, не всегда, и это происходит обычно через 3/5 минут после того, как яоткрыл вкладку.На сайте нет ни вызовов ajax / ws, ни активности в целом.На странице нет iframe, поэтому нет другого объекта 'window'.Кажется, это происходит только в Firefox, но они сказали мне, что это может произойти и в Chrome, даже если я никогда не видел это лично.У вас есть подсказка, что здесь происходит?
Заранее спасибо