このエラーは、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);
},
image にランダムなデータを追加します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
マップを 1 つしかロードしないため画像が不要な場合は、次preload
を追加して要素を手動で無効にすることができます。
$('.preloader').remove();
すべてのメソッドが初期化された後のinit.js
ファイルで:craftmap
$('.demo3').craftmap({
image: {
width: 2046,
height: 925
},
map: {
position: '855 410'
}
});
$('.preloader').remove(); // IE7 fix