На некоторых сайтах, таких как StackExchange, появляется сообщение «Вы уверены, что хотите покинуть эту страницу?» диалоговое окно, когда вы пытаетесь выйти при определенных условиях, например, если у вас есть сообщение, которое вы еще не закончили редактировать. Это полезно!
К сожалению, вредоносные или зараженные сайты любят использовать ту же функциональность, чтобы сказать: «Эй! Вы не установили наш антивирус вредоносных программ для борьбы со 111 вирусами, которые мы определенно не лжем найти на вашем компьютере!», И «Оставьте это Параметры страницы и «Оставаться на этой странице» заменяются словами «Будьте в безопасности. Установите наш продукт» и «Стреляйте себе в ногу». Это бесполезно!
Javascript может делать некоторые неприятные вещи. Когда я получу один из тех диалогов, пытающихся удержать меня от явно вредоносного сайта, каким должен быть мой ответ? Безопасно ли нажимать кнопку «Покинуть эту страницу» или каким-либо другим образом заменить текст? Может ли сайт изменить поведение кнопки или перехватить мою попытку уйти и нарисовать свой собственный фальшивый диалог, который делает все, что захочет злоумышленник, когда я нажимаю на него?
Ответы:
Несмотря на то, что говорится в некоторых из этих диалогов, они не могут сделать ничего плохого . Вы всегда можете нажать кнопку « ОК» или « Покинуть страницу», чтобы закрыть нарушающую страницу без каких-либо последствий.
Если диалоговое окно слишком длинное и кнопки находятся за пределами экрана , вы можете нажать,Enter чтобы подтвердить закрытие страницы.
Если у вас нет клавиатуры (устройства с сенсорным экраном), используйте букмарклет ниже или посмотрите ответ SimpleSimon (только Chrome).
Теперь некоторые подробности.
Есть только один способ выполнить какое-либо действие при закрытии страницы: через
onbeforeunload
событие. Конечно, это может быть легко использовано против пользователя (например, когда он пытается закрыть страницу, он открывает свою копию в новом окне), поэтому он очень ограничен.На самом деле единственная разумная вещь, которую вы можете сделать, - это открыть диалоговое окно с пользовательским текстом и двумя кнопками, одна из которых покинет страницу, а другая - остаться. Единственное, что страница может сделать с этим диалогом, это определить его текст. Кнопки и заголовок неизменны. Вот скриншот из Firefox 3.6: ( очень старая версия Firefox)
Конечно, когда вы позволяете людям показывать всплывающие окна с любым текстом и просто нажимаете кнопку «ОК / Отмена» , вы можете быть уверены, что рано или поздно некоторые парни будут использовать его против вас.
На приведенном выше снимке экрана « ОК» означает просто «Покинуть эту страницу», но пользовательское описание предполагает нечто большее. Таким образом, браузеры изменили диалоги, поэтому их сложнее ввести в заблуждение. Например, последние версии Firefox, кажется, игнорируют пользовательский текст:
Chrome показывает пользовательский текст, но всегда добавляет вопрос, спрашивающий пользователя, что он хочет сделать, и кнопки явно указывают свои действия: (но он по-прежнему подвержен сообщениям "cat videos"!)
Вот Internet Explorer 10, также «склонный к кошкам»:
Opera 12 просто игнорирует
onbeforeunload
событие, и если вы попытаетесь закрыть вкладку таким образом, она закроется, как и любая другая. Впрочем, я не тестировал последнюю Opera.Итак, подведем итог самым важным вещам:
Вы можете отключить
onbeforeunload
событие, если хотите, эффективно предотвращая просьбу страниц покинуть или остаться. Вот кроссбраузерный пользовательский скрипт . (прокрутите вниз, если ссылка не работает)Если вы находитесь на определенном веб-сайте с вредоносным всплывающим окном и все еще боитесь нажать « Выйти» , вы можете создать букмарклет для его удаления. Щелкните правой кнопкой мыши на панели закладок, выберите « Новая закладка» (или эквивалент) и вставьте ее в виде URL-адреса: (это всего лишь мини-код из приведенной выше ссылки)
Затем просто нажмите на эту закладку, и всплывающее окно будет временно удалено с активной страницы.
Если вы хотите проверить, как эти всплывающие окна выглядят в вашем браузере, или протестировать букмарклет / скрипт пользователя, создайте текстовый файл со следующим кодом и сохраните его в виде
.html
файла:Кажется, что ссылка на пользовательский скрипт сейчас не работает, так что вот копия, извлеченная из кэша archive.org . Вся заслуга оригинального создателя сценария.
источник
На самом деле, FireFox имеет довольно изящное (и простое) решение. Если вы печатаете
в адресную строку, затем прокрутите вниз до
и установите для него значение True, вы больше не увидите всплывающие окна Leave Page. В FireFox. Жаль, что в Chrome подобного обходного пути нет.
источник
Самое простое решение в Chrome - отключить вкладку.
Наберите chrome: // сбой в адресную строку и сохраните как закладку .
В следующий раз, когда вы захотите покинуть такую страницу, просто нажмите на закладку, и она мгновенно убьет эту вкладку, не затрагивая другие ваши вкладки. Нет необходимости убивать весь сеанс браузера, как предлагали некоторые другие.
В качестве альтернативы вы можете повесить вкладку с помощью chrome: // hang, а затем просто закрыть вкладку без использования JavaScript.
Не уверен, что это возможно в других браузерах.
источник
Это событие window.onbeforeunload и особенность веб-браузера. Так что это должен быть фиксированный диалог веб-браузера. Вы можете попробовать в разных браузерах, и поэтому вы можете видеть, диалоговые окна имеют разные дизайны.
Но я предполагаю, что вы могли бы разработать всплывающее окно с javascript, которое выглядит очень очень похожим на оригинальное всплывающее окно браузера. И если он хороший разработчик, он также проверит тип браузера, прежде чем показывать диалоговое окно. ;)
Поэтому, чтобы быть уверенным в исходном диалоге, вы должны параллельно перепроверить правильный диалог, т.е. здесь: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm
Смотрите здесь для получения дополнительной информации о событии:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx
источник
Быстрый обходной путь, если вы не доверяете всплывающему окну и его намерениям / действиям:
Для Chrome:
Побег, чтобы удалить всплывающее окно
Щелкните правой кнопкой мыши на странице
Выберите Осмотреть
Прокрутите вверх
Щелкните правой кнопкой мыши на теге
Удалить узел
Закрыть вкладку
Я уверен, что другие браузеры имеют аналогичные параметры.
источник