检测是否激活阻止弹出窗口功能

无论你是否认为弹出窗口是的一种现代形式的鼠疫,就如同蝗虫和布兰妮的CD一样,实事是,它们作恶已经有一段时间了。许多基于网络的应用都使用弹出窗口做一些无用的事情,从显示帮助页面到显示各种不同商品图片不等。不幸的是,如果客户端的浏览器安装了阻止弹出窗口的插件,并且激活了,那么,对于商家来说,对它们使用弹出窗口就是在做无用功。

一种可行的解决方案就是在你的网站到处都写满“此网站使用了弹出窗口,请确保您没有使用弹出窗口阻拦功能”的消息。但是这样做,希望让用户在浏览你的网页的时候不使用弹出窗口的功能似乎不太现实。你需要做的就是检测用户是否使用了阻拦弹出窗口的功能,使你的网站适应浏览需求。

使用一个弹出窗口来阻止弹出窗口
我所选择完成这个功能的办法就是试图去打开一个弹出窗口。当然,这就意味着在我编程过程中必须非常的小心,因为如果我不这么做,在客户端中也许就会出现错误。保持着这种心态,我安装了Google Toolbar ,并且使用一个装载事件处理器(onload event handler)来对页面进行编码,这个装载事件处理器可以检测到阻止弹出窗口的软件。这样做的结果如Listing A和Listing B所示。

在Listing A中显示的方法是那个装载事件处理器(叫做setEvents)被击中,它试图打开一个在Listing B中显示的popupChild.html页面。这样看起来这种办法足够可以确定阻止弹出窗口的功能是否在运作,但是事情不总是这样。这依赖于这个拦截功能安装的没有问题。我们需要的就是使子窗口弹出来显示“Hello,world!”或者什么其它的东西。这个页面使用了setTimeout方法来延时调用checkChild方法;这就给弹出窗口留出了改变父窗口的一个隐藏的输入对象并且关闭它自己所需要的时间。一旦这个工作完成,checkChild方法就会检查隐藏输入对象,确认子窗口是否改变了它的内容。如果它的内容已经被改动过了,那么弹出窗口功能就会生效,这就意味着客户没有使用拦截功能。

在整个测试过程中,有两个最难的部分,就是访问父窗口的隐藏输入对象和估计弹出窗口打开的时间。第一个问题通过使用文档对象模型的window.opener就很容易解决了。第二个部分就更困难一些,毕竟在我使用这些例子的时候,浏览器和服务器都在同一台机器上。所以,即使这些例子在我这里运行正常,可是,它们对于其他人也许就不适用了。必须还要找到一条更好的办法。

一个更好的办法
对于JavaScript而言,有一件有趣的事情,就是它不受浏览器影响,它是相对一致的。如果一个状况在一个浏览器上出现了,奇怪的是,在其它浏览器上出现这个状况的可能性会很小。例如,使用对象编写警告代码,在微软的Internet Explorer 中会显示“[object]”而在Mozilla中会显示“[object Window]”。另外一个有意思的事情就是上述的问题只会在对象创建了以后才发生。大家可以参见Listing C的例子。我们需要注意上述的问题,因为我们仅仅是检查是否打开了阻止弹出窗口的功能,它仅仅是一个空页面。

我之所以编写这段代码,是因为最近有一些开发者和技术支持人员花费了三个小时,在会议室中解决这个问题。远端客户坚持说它们没有使用弹出窗口的拦截功能;直到大家都精疲力尽的时候才有人提出要检查一下客户安装的软件。在接近列表的最末端有一个给客户电子邮件添加可爱的笑脸的程序。只通过简单的检查就发现,这个程序不仅仅有给电子邮件添加笑脸的功能,它同时还可以拦截弹出窗口。用户安装了这个东西,却丝毫没有察觉,这就是我编写代码所希望避免的问题。

时间: 2024-08-31 16:41:30

检测是否激活阻止弹出窗口功能的相关文章

jQuery实现的模拟弹出窗口功能示例_jquery

本文实例讲述了jQuery实现的模拟弹出窗口功能.分享给大家供大家参考,具体如下: //初始化文档 $(document).ready(); //----------------弹出DIV仿模态窗口开始---------------- var divW; //DIV宽度 var divH; //DIV高度 var clientH; //浏览器高度 var clientW; //浏览器宽度 var divTitle; //DIV标题 var pageUrl; //DIV中加载的页面 var div

浏览器要怎么阻止弹出窗口

Internet Explorer 8 (简称 IE8)是为全世界所广泛使用的 Windows Internet Explorer 浏览器系列的最新版本,它集成了更多个性化.智能化.隐私保护的新功能,为您的网络生活注入新体验,让您每一天的网上冲浪更快捷.更简单.更安全,并且充 满乐趣. 浏览器的阻止窗口弹出功能,能避免用户在浏览网页的时候弹出多个跟本页不相关的广告网站,要知道很多网站都带有钓鱼程序,浏览器这个自带的功能保护了我们的电脑安全. 操作步骤 1.打开注册表编辑器,找到HKEY_CURR

如何阻止弹出窗口浏览器设置攻略

在日常使用电脑的过程中,弹出窗口是我们经常遇到,一些是对应我们的操作必须出现的,而有些则是被动接受的.尤其是各种广告窗口更是无孔不入,防不胜防,这些弹出窗口严重影响了电脑的正常使用,甚至会造成电脑出现一定时间内"假死"的现象,那么我们应该如何对付它们呢? 问:电脑经常自动弹出一些非法广告页面,用禁止弹出窗口等诸多软件也无法禁止,查杀病毒也未发现任何异常,我是没辙了,请问有什么方法可以解决吗? 答:这是共享版的FlashGet加入的广告,你一定是运行了FlashGet才会出现的,注册软件

android实现百度地图自定义弹出窗口功能_Android

我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图最新的Android SDK中,没有方便操作这种弹出窗口的类,虽然有一个PopupOverlay,但是它只支持将弹出内容转化为不多于三个Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,看了一遍百度地图覆盖物的API,我决定用自定义View的方法来实现类似的效果,

javascript仿XP关机效果的弹出窗口功能_javascript技巧

弹出窗口 下拉弹出窗口时会将其隐藏,关闭时会让其显示,目的是在IE中防止弹出的DIV挡不住下拉框 弹出窗口 弹出窗口

android实现百度地图自定义弹出窗口功能

我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图最新的Android SDK中,没有方便操作这种弹出窗口的类,虽然有一个PopupOverlay,但是它只支持将弹出内容转化为不多于三个Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,看了一遍百度地图覆盖物的API,我决定用自定义View的方法来实现类似的效果,

你与弹出窗口见面的几率有多大

当我们正在兴致勃勃地进行网上冲浪时,突然弹出的烦人广告窗口是大家最最忌讳的事情.庆幸的是,现今有了很多专门对付弹出广告窗口的第三方工具, 例如http://www.aliyun.com/zixun/aggregation/10945.html">3721.百度搜霸以及Windows XP SP2自带的弹出广告封杀的功能.有了 它们的保驾护航,看看那些弹出广告窗口与你见面的几率有多大?今天笔者就教你一招测试你的浏览器.广告封杀软件对付各种弹出的广告窗口的能力! 首先,用待测试的浏览器打开ht

谷歌浏览器总是弹出窗口阻止程序该怎么办?

  谷歌浏览器总是弹出窗口阻止程序该怎么办?          弹出窗口拦截器可以帮助你阻止恼人的网页,或可能会威胁到计算机系统安全的弹窗.但是它们也可能屏蔽那些你肯需要使用的弹出窗口.因此,你需要了解如何禁用弹出窗口拦截器. 1.在工具栏上使用 Google Chrome 菜单.工具栏上的菜单位于浏览器右上角. 2.选择"设置". 3.在页面底端找到并点击"显示高级设置". 4.在"隐私设置"部分,点击"内容设置".

ie11浏览器弹出窗口阻止程序怎么关闭

  1.首先,需要显示出ie11浏览器的"命令栏",如果已经显示出来了,可以忽略这个步骤: 2.点击ie11浏览器"命令栏"中的"工具": 3.然后点击"弹出窗口阻止程序"种的关闭弹出窗口阻止程序: 这样,在使用网银就不会出现烦人的无法登陆以及转账了.