打开ExtJS 4.0的desktop示例,在FireFox, IE 8等浏览器中均可以显示桌面图标,而在IE 6.0中无法显示PNG图标,甚至出现IE6非法操作的错误。CSS代码片段如下:
.notepad-shortcut {
background-image: url(./images/notepadLarge.png);
width: 46px;
height: 46px;
}
.x-ie6 .notepad-shortcut {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='./images/notepadLarge.png', sizingMethod='scale');
}
参考了一些关于DXImageTransform.Microsoft.AlphaImageLoader的文章,大部分是说滤镜被禁用之类的错误,结果修改了还是无法显示。
最后抱着试试看的态度,把src中的相对路径改为绝对路径,如:
.x-ie6 .notepad-shortcut {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/extcss/images/notepadLarge.png', sizingMethod='scale');
}
竟然在IE中能够正常显示,并且IE也不会出错(估计之后的“非法操作”也正是由于无法正确找到资源导致的)。
虽然解决了兼容性问题,但这样写绝对路径也存在移植性差的问题。