(function() { // Отключаем onbeforeunload window.onbeforeunload = null; // Полностью блокируем вызов модальных окон (alert, confirm, prompt) window.alert = function() { console.log('Alert dialog blocked.'); }; window.confirm = function() { console.log('Confirm dialog blocked.'); return true; }; window.prompt = function() { console.log('Prompt dialog blocked.'); return ''; }; // Переопределяем addEventListener для блокировки beforeunload const originalAddEventListener = window.addEventListener; window.addEventListener = function(type, listener, options) { if (type === 'beforeunload') { console.log('Attempt to add beforeunload listener blocked.'); return; } return originalAddEventListener.call(this, type, listener, options); }; // Переопределяем removeEventListener для блокировки удаления beforeunload const originalRemoveEventListener = window.removeEventListener; window.removeEventListener = function(type, listener, options) { if (type === 'beforeunload') { console.log('Attempt to remove beforeunload listener blocked.'); return; } return originalRemoveEventListener.call(this, type, listener, options); }; // Переопределяем метод set для onbeforeunload Object.defineProperty(window, 'onbeforeunload', { set: function() { console.log('Attempt to set onbeforeunload blocked.'); }, get: function() { return null; } }); // Периодически обнуляем обработчики beforeunload, если они появляются setInterval(function() { if (window.onbeforeunload !== null) { window.onbeforeunload = null; console.log('onbeforeunload handler removed.'); } }, 1000); // Проверка каждые 1 сек. })();