Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

弹窗!弹窗!可恶的弹窗!

  现在的浏览器基本上都自带了弹窗功能,但是道高一尺魔高一丈。各种突破浏览器限制的超级弹窗代码层出不穷。
  有一次我使用火狐无意中点进了一个垃圾站。突然听到喀嚓了一声,我知道一定是被弹窗了。这时候火狐给了我个惊喜。它告诉我弹窗已经被拦截,我心里窃喜。但是过了几秒钟,一股恶心的音乐从扬声器里蹦出充斥着我的鼓膜。我意识到这是一个Flash网游广告,我想关掉它,但是我在屏幕上没找到这个页面。只有火狐地址栏的右端闪烁着“弹窗已经被拦截”。我擦,拦截你妹啊!顿时一种卸载火狐的冲动油然而生。于是我再也不相信火狐自带的广告拦截了。
  一直以来我都很信任IE的,因为以前IE8的时候把弹窗拦截开到最高确实很有效。但是后来升级到了IE9,也依照IE8时候的设置把弹窗拦截开到最高。有一次我用它看H站看的正兴奋呢,突然弹出一个广告的窗口挡住了我猥琐的视线。奇葩的是这个窗口不是IE弹出的。而是Chrome!我瞬间石化。IE上调用了Chrome!?我冷静下来想了想,哦,Chrome是我电脑的默认浏览器,应该是某些代码调用了默认浏览器导致的。于是我抓起键盘,扒光了她的衣服,深入她的身体,把她的源代码用艺术的眼光审视了一下。然后开启调试用具,各种调教!
  下面就是这个无节操的弹窗代码,它调用了WMP控件的某个方法来打开一个URL。
//这个是IEOnly的代码
var o=new ActiveXObject("WMPlayer.OCX");
o.launchURL("http://www.web-tinker.com");
  这个代码是我参考了那些弹窗代码写的,真正使用弹窗代码的家伙,一般不会直接用“ActiveXObject”创建WMP对象,而是使用OBJECT标签和CLSID来指定对象并调用的。它们可能是为了防止代码屏蔽吧,但是原理就是这个。这个打开URL的方法和Web没有半毛钱关系,是WMP自己提供的一个方法。它会就调用了默认浏览器来打开这个URL。由于它不是基于浏览器的,所以浏览器上的弹窗拦截无法拦截它,除非禁用WMP控件。虽然现代Web一般使用HTML5来做媒体播放,但是网络上依然存在很多古老的网站,他们仍旧使用WMP。如果禁用WMP就意味着无法使用古老网站的媒体了。总之,有得必有失,取舍就在自己一念之间。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^