このエラーは、IE7でイメージをキャッシュするために発生します。 jQuery load()
IE7にキャッシュされた画像の場合には、preload
イメージが消えない場合、メソッドは起動しませんでした。
これを修正するには、マークアップで画像にランダムにデータを追加する必要があります。例えば
タイムスタンプ:あなたがイメージに3個の異なる乱数を追加する必要が同じイメージを持っているよう
<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 ... -->
注意。
それともcraftmap.js
コード変更することができます前に
:
$(img).addClass(S.image.name).attr('src', src).load(function(){
検索機能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
にランダムなデータを追加しますA FTER:
$(img).addClass(S.image.name).attr('src', src + '?' + Math.random() * (new Date().getTime())).load(function(){
あるいはさらに良い:
あなたは1つのマップのみをロードするよう、あなたはpreload
イメージを必要としなかった場合は、追加することによって、手動でpreload
要素を無効にすることができます:あなたのinit.js
で
$('.preloader').remove();
をのメソッドが初期化された後のファイル:
$('.demo3').craftmap({
image: {
width: 2046,
height: 925
},
map: {
position: '855 410'
}
});
$('.preloader').remove(); // IE7 fix
素晴らしい、ありがとう。これはIE7でうまくいかなかった理由を疑問に思って数日間狂ってしまいました。 – doubleplusgood