使用xmonitor.cn的监控服务将可能导致IE浏览器崩溃
最近有用户报告,在使用ie8的情况下访问我们公司的网站,出现浏览器崩溃的情况,但一直没查出原因,上周末的时候,副总发短信说,他也出现了同样的问题,而且是在升级了Flash浏览器之后出现IE8浏览器崩溃的情况。今天以最少代码法对代码进行排查,一路辛苦的排查就不说了,结果表明,是因为如下其中一段代码导致错误:
<script> var hostid=xxxx;</script><script type=’text/javascript’ src=’http://client.xmonitor.cn/xmonitor.js’></script>
xmonitor.cn提供网速监测服务,目前我们公司正在使用他们的免费试用服务,从他们提供的报告来看,我觉得报告很一般。同时提供这种服务的还有中国站长站的网站保姆,监控宝(本站目前正在使用),monitorx.cn等多家网站。这几家网站以监控宝提供的免费服务最多,其它网站的免费服务都有限制。
来分析一下xmonitor.cn提供的代码:
var xmonitord=new Date();
var xmonitort=xmonitord.getFullYear()+""+xmonitord.getMonth()+""+xmonitord.getDate();
document.getElementById("test").value =
'<object id="test" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/
swflash.cab#version=6,0,40,0"><param name="align" value="middle" />
<param name="allowScriptAccess" value="always" /><param name="FlashVars"
value="hosturl='+location.href + '&hostid='+ hostid+'" />
<param name="quality" value="high" /><param name="bgColor" value="#ffffff" />
<param name="src" value="http://client.xmonitor.cn/newflash/newB.swf?t='+xmonitort +'" />
<param name="name" value="test" /><param name="bgcolor" value="#ffffff" />
<param name="flashvars" value="hosturl='+location.href + '&hostid='+ hostid+'" />
<embed id="test" type="application/x-shockwave-flash" width="1" height="1"
src="http://client.xmonitor.cn/newflash/newB.swf?t='+xmonitort +'" name="test"
bgcolor="#ffffff" quality="high" flashvars="hosturl='+location.href + '&hostid='+ hostid+'"
allowscriptaccess="always" align="middle"></embed></object>';
这段代码的作用是输出一个Flash,最终输出的结果如下:
<object id="test" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="align" value="middle" /><param name="allowScriptAccess" value="always" />
<param name="FlashVars" value="hosturl=http://conis.cn/index.php&hostid=1234" />
<param name="quality" value="high" /><param name="bgColor" value="#ffffff" />
<param name="src" value="http://client.xmonitor.cn/newflash/newB.swf?t=20091125" />
<param name="name" value="test" /><param name="bgcolor" value="#ffffff" />
<param name="flashvars" value="hosturl=http://conis.cn/index.php&hostid=1234" />
<embed id="test" type="application/x-shockwave-flash" width="1" height="1"
src="http://client.xmonitor.cn/newflash/newB.swf?t=20091125" name="test" bgcolor="#ffffff"
quality="high" flashvars="hosturl=http://conis.cn/index.php&hostid=1234"
allowscriptaccess="always" align="middle"></embed></object>
由此可见,xmonitor.cn是采用flash作为网速的测试,但因为flash写得有问题,结果导致了无法向后兼容。目前已经发现在ie8 + 最新Flash的版本(版本:10.0.42.34)会出现问题,在Xp + ie8 + Flash(版本:10.0.42.34)百分之百出问题,而在Windows 7下,则有可能会出现问题。在Firefox下面没有发现问题,
警告已经使用xmonitor.cn网站监控服务的网站,应该立即撤换掉相关代码,以避免你的网站在客户的浏览器有崩溃的现像。如果你需要使用网站监控,可以使用日志监控或者其它相关监控提供的网站。
本文链接:http://conis.cn/1428/
