此错误是由于在 IE7 中缓存图像引起的。load()
如果图像缓存在 IE7 中,则不会触发jQuery方法,因此preload
图像不会消失。
要解决此问题,您需要在标记中向图像添加随机数据。
时间戳例如:
<div class="demo1">
<img src="/assets/framework/world_map.jpg?23456897" class="imgMap" />
<!-- ... your code ... -->
<div class="demo2">
<img src="/assets/framework/world_map.jpg?907784534235" class="imgMap" />
<!-- ... your code ... -->
<div class="demo3">
<img src="/assets/framework/world_map.jpg?11123423535" class="imgMap" />
<!-- ... your code ... -->
请注意,由于您有相同的图像,您需要向图像添加 3 个不同的随机数。
或者您可以修改craftmap.js
代码:
init
在类中查找函数preloader
:
init: function(){
var img = new Image(),
src = IMG.attr('src');
P.preloader.create();
$(img).addClass(S.image.name).attr('src', src).load(function(){
var t = $(this),
css = {
width: this.width,
height: this.height
}
t.css(css);
IMG.remove();
P.preloader.remove();
S.preloader.onLoad.call(this, t, css);
}).appendTo(C);
},
并将随机数据添加到图像src
:
前:
$(img).addClass(S.image.name).attr('src', src).load(function(){
后:
$(img).addClass(S.image.name).attr('src', src + '?' + Math.random() * (new Date().getTime())).load(function(){
甚至更好:
如果您在仅加载一张地图时不需要preload
图像,则可以preload
通过添加手动禁用元素:
$('.preloader').remove();
在所有方法初始化后在您的init.js
文件中:craftmap
$('.demo3').craftmap({
image: {
width: 2046,
height: 925
},
map: {
position: '855 410'
}
});
$('.preloader').remove(); // IE7 fix