尽管其中有些对话说了什么,但它们不能做任何恶意的事情。您始终可以单击“ 确定”或“ 离开页面”关闭违规页面,而不会造成任何后果。
如果对话框太长并且按钮不在屏幕上,则可以按Enter确认关闭页面。
如果您没有键盘(触摸屏设备),请使用下面的书签,或查看SimpleSimon的答案(仅Chrome)。
现在,一些细节。
关闭页面时,只有一种方法可以执行某些操作:通过onbeforeunload
事件。当然,这可以很容易地针对用户使用(例如,当他尝试关闭页面时,它会在新窗口中打开其副本),因此它非常有限。
实际上,您唯一可以做的合理的事情就是打开一个包含自定义文本和两个按钮的对话框,一个离开页面,一个停留。页面只能对该对话框执行的操作是定义其文本。按钮和标题栏是不可变的。这是Firefox 3.6的屏幕截图:(非常旧的Firefox版本)
当然,当您让人们用任何文本和“ 确定/取消”按钮显示弹出窗口时,那么您可以确定早晚有人会用它来对您不利。
在上面的屏幕快照中,“ 确定 ”仅表示“离开此页面”,但是自定义说明还提供了其他内容。因此,浏览器已更改了对话框,因此很难使它们产生误导。例如,Firefox的最新版本似乎忽略了自定义文本:
Chrome会显示自定义文本,但始终会附加一个问题,询问用户他想做什么,并且按钮会明确说明其操作:(但仍然容易出现“猫视频”消息!)
这是Internet Explorer 10,也很容易出现猫:
Opera 12只会忽略该onbeforeunload
事件,并且如果您尝试像这样关闭选项卡,它将像其他任何选项一样关闭。不过,我还没有测试过最新的Opera。
因此,总结一下最重要的事情:
- 页面无法显示带有任何文本的对话框。网站可以要求浏览器显示带有自定义文本的对话框,但浏览器可以完全忽略它(Opera),使用通用文本(Firefox)或明确说明会发生什么(Chrome,IE)。
- 对话框的详细信息取决于您使用的浏览器,但是按钮始终是不可变的。如果他们没有明确说出哪个人在做什么,那么“ 确定”表示“离开此页面*,而取消则是”留在这里”。
- 如果您决定离开网站,则网站无法执行任何恶意操作。您的文件不会被猫视频取代,不会被135234病毒淹没,也不会通知FBI您的计算机上有非法软件。
您可以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>
用户脚本链接现在似乎已失效,因此这是从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);