关于“单击此处以激活控件”

自从使用了Windows Vista上的IE7来浏览网站的时候(其实从IE6 SP2开始),经常会发现一些视频或者Flash网站出现了“单击此处以激活控件”的现象。现象就是在某些视频播放控件(Windows Media Player或者Real Player),或者是Flash动画,或者是其它有可视化界面的ActiveX控件的周围有一个虚线框,当鼠标移上去后,会显示“单击此处以激活控件”,只有当你在该控件上用鼠标单击或者按一下空格键,这个虚线框才会去掉,该ActiveX控件才可以正常使用。

其实要解决此问题非常简单,如果我们去看一下这个控件的代码,所有的ActiveX控件是使用内嵌式写入的。那么解决它就需要调用一下Java Script代码来解决。在JS中调用document.write(“<object classid=’XXXXXXXX’…的方式来往页面上写ActiveX控件就不会解决此问题。

为什么会有这种提示呢?原理也很简单,目前Web 2.0的出现,使网民开始当家做主。所有的网民均可以使用HTML Editor控件往我们的网站中输入内容,如果有人心怀恶意,用这种方式种一个木马ActiveX,而客户在不知情的情况下下载使用了,可能会带来灾难性的后果。所以微软会在IE6 SP2以后,提供这种方式以便对这种ActiveX的行为进行限制,只有当用户确认了才会激活此控件,允许它进行操作。

所以一些大型网站目前需要更改一下它们的代码,不要再使用内嵌式方法写入ActiveX控件,而改用Java script动态加载。比如CSDN目前的视频栏目其实就有这个问题。上周末在厦门参加IDG VC互联网创投大会时,发现与会的很多Web 2.0视频分享网站也都有此问题,在此向各位提醒一下。

打赏作者

“关于“单击此处以激活控件””的8个回复

  1. 这似乎与安全无关,而是因为一项网页展现方法的专利,微软才改成这种方式的。

  2. document.write 在XHTML 规范是不允许的,在XHTML 1.1下无法使用。如果一定要用script生成,使用DOM标准的函数比较好。
    如document.createElement();

  3. 楼主说的是不对的,这个这个原因哦~

    我记得是因为微软用了别的一个公司的什么专利技术,然后能直接看,后来那公司把ms告了,ms败诉,所以把那个技术移除了,又自己补了一个方法,就成这个样子了.

    可以翻翻以前的新闻,有报道这个的.

  4. 已经有很多方法解决这个问题了,我个人觉得最好的就是Flash替换法。

    所谓的Flash替换法,只需要在原来的页面上引用一个js,就那么简单,不需要把原来的Flash去掉然后换成加载Flash的JavaScript。这个js的作用就是在页面加载时判断浏览器是不是IE,是的话就用Flash去替换Flash——没错,就是用动态插入的Flash去替换静态声明的Flash,这样就相当于激活了所有Flash插件。

评论已关闭。