Незважаючи на те, що кажуть деякі з цих діалогів, вони не можуть зробити нічого шкідливого . Ви завжди можете натиснути кнопку " ОК" або " Залишити сторінку", щоб закрити порушену сторінку без наслідків.
Якщо діалогове вікно занадто довге, а кнопки вимкнені з екрана , ви можете натиснути,Enter щоб підтвердити закриття сторінки.
Якщо у вас немає клавіатури (пристроїв із сенсорним екраном), скористайтеся закладок нижче або перегляньте відповідь SimpleSimon (лише Chrome).
Тепер, деякі деталі.
Є лише один спосіб виконати якусь дію, коли сторінка закривається: через onbeforeunload
подію. Звичайно, це можна легко використати проти користувача (наприклад, коли він намагається закрити сторінку, вона відкриває її копію в новому вікні), тому вона дуже обмежена.
Насправді єдине розумне, що ви можете зробити, - це відкрити діалогове вікно зі спеціальним текстом та двома кнопками, одна - щоб залишити сторінку, а одна - залишитися. Єдине, що сторінка може зробити в цьому діалоговому вікні - це визначити її текст. Кнопки та заголовки незмінні. Ось скріншот від Firefox 3.6: ( дуже стара версія Firefox)
Звичайно, коли ви дозволяєте людям показувати спливаючі вікна з будь-яким текстом і просто кнопками ОК / Скасувати , ви можете бути впевнені, що рано чи пізно деякі хлопці використають його проти вас.
На наведеному вище скріншоті ОК означає просто "Залишити цю сторінку", але власний опис пропонує щось більше. Тож браузери змінили діалоги, тому важче зробити їх оманливими. Наприклад, останні версії Firefox, здається, ігнорують нестандартний текст:
Chrome показує нестандартний текст, але завжди додає запитання, запитуючи користувача, що він хоче робити, а кнопки чітко вказують свої дії: (але він все ще схильний до повідомлень про "котячі відео"!)
Ось Internet Explorer 10, також "схильний до котів":
Opera 12 просто ігнорує onbeforeunload
подію, і якщо ви спробуєте закрити вкладку так, вона закриється, як і будь-яка інша. Я не перевіряв останню оперу.
Отже, підводячи підсумки найважливіших речей:
- Сторінки не можуть відображати діалоги з будь-яким текстом. Веб-сайт може попросити браузер показати діалогове вікно зі спеціальним текстом, але браузер може взагалі проігнорувати його (Opera), використовувати загальний текст (Firefox) або прямо сказати, що буде (Chrome, IE).
- Деталі діалогового вікна залежать від браузера, який ви використовуєте, але кнопки завжди незмінні. Якщо вони не скажуть прямо, хто робить що, тоді ОК означає "залишити цю сторінку *, а Скасувати -" залишитися тут ".
- Веб-сайти не можуть виконувати жодних шкідливих дій, якщо ви вирішите залишити їх. Ваші файли не будуть замінені на відео з котами, ви не будете залиті 135234 вірусами, і ФБР не буде повідомлено, що на вашому комп’ютері є нелегальне програмне забезпечення.
Ви можете відключити onbeforeunload
подію, якщо хочете, фактично не дозволяючи сторінкам просити вас залишити або залишитися. Ось сценарій крос-браузера користувача . (прокрутіть униз, якщо посилання мертве)
Якщо ви перебуваєте на певному веб-сайті, на якому відображається шкідливе спливаюче вікно, і ви все ще боїтесь натиснути « Вийти» , ви можете створити закладку для видалення. Клацніть правою кнопкою миші панель закладок, виберіть " Нова закладка" (або еквівалент) та вставте цю URL-адресу: (це просто міні-код із наведеного вище посилання)
javascript:var x=document.createElement('script');x.type='text/javascript';x.innerHTML='onbeforeunload=function(){};';document.body.appendChild(x);
Потім просто натисніть цю закладку, і спливаюче вікно буде тимчасово видалено з активної сторінки.
Якщо ви хочете перевірити, як виглядають ці спливаючі вікна у вашому браузері або протестуйте закладку / користувальницький скрипт, створіть текстовий файл із наступним кодом і збережіть його як .html
файл:
<html><body onbeforeunload="return 'My custom text.'">_</body></html>
Здається, що посилання usercript зараз мертве, ось ось копія, витягнута з кешу archive.org . Вся заслуга за оригінального творця сценарію.
// ==UserScript==
// @name Disable - remove onbeforeunload
// @namespace
// @description Disable - remove the annoying onbeforeunload event
// @include *
// @author netvisiteurs.com
// ==/UserScript==
var x = document.createElement('script');
x.type = 'text/javascript';
x.innerHTML = 'onbeforeunload = function() {};';
document.body.appendChild(x);