前两天定位一个用户浏览器卡死问题,一打开页面就卡的很死,毫无反应,用httpwatch抓包的话就和IE死在一起了,没法子用fiddler抓包,发现下载到一个png图片的时候,由于dns解析问题,改png图片指向了海外服务器,无法下载完成,此时浏览器不是跳过这个图片往下走,而是就卡在该处,也不对用户操作有任何响应。如果设法让该请求返回一个png图片,浏览器立刻就回复了正常。
究其原因,是IE6下面要使用半透明png图片,就躲不开神奇的DXImageTransform.Microsoft.AlphaImageLoader滤镜。不管你是用所谓的脚本方式还是htc方式,都一样。而这个滤镜在开始工作的时候,IE6必须老老实实停下来等它完成。由此杯具就诞生了。
考虑到用户环境的复杂性,如果真的要做一个稳定可用的在线web应用,还是尽量避免使用滤镜去渲染半透明的png图片吧。哪怕在IE六下给一个降级的解决方案呢(不透明图片?透明gif?),或者干脆先下载好图片再应用滤镜(如果用js或者htc方案的,更可以考虑把这个检测加进去)。