起因:
相信用过extjs的都会首先被告知这个问题:
1. 空白图片问题
需要设置 Ext.BLANK_IMAGE_URL 为本机的 Ext空白图片地址 ,否则 如果不能联网就会界面叉了。
其实作者主要是利用了一个空白图片在各个浏览器下一致的inline-block表现( 垂直居中问题中提到过 ),然后再设置css背景来具体表现。
但是自己本地要求设置一下总是感觉很奇怪,今天试验了利用 computedStyle 的方式,终于可以摆脱这种问题:
原理:
关键在于:
css 背景图片路径相对地址设置是针对css文件本身,而不是页面地址,控制权在于css文件作者 。
而如果用 img 标签的话,则它的相对地址必须为页面地址,控制权在于使用者 。
但是如果设置了css背景图片相对地址,再利用 computedStyle 获取,则可以得到该图片的绝对地址,那么这个地址也可以用在 image 标签下了。
解决:
在css文件中设置背景占位符图片的相对地址(可以绝对定位到屏幕外),页面中获取绝对地址后再设置image标签的图片src,之后那个设置背景占位图片的元素其实可以删除了。