2011-07-27 9 views
2

現在、サイトを構築しており、Shadowbox JSプラグインを使用して画像を表示しています。IEの画像の実際の幅と高さを取得する

Shadowboxは画像ファイルに直接リンクするのではなく、JSPで画像を提供するので、画像の幅と高さを動的に決定できないため、画面サイズのオーバーレイで画像を開くだけです。

それは手動で「相対」を使用してシャドープラグインに幅と高さを渡すことも可能ですので、私は次のコードを使用してFF /クローム/サファリのための問題を中心に持っている:

$('#pic1img').attr("src")).load(function() { 
      picWidth = this.width; 
      picHeight = this.height; 
    }); 

$(window).load(
      function() { 
       var w = $("#pic1img").width(); 
       var h = $("#pic1img").height(); 
       if(picWidth < w){ picWidth = w; } 
       if(picHeight < h){ picHeight = h; } 
       $('#pic1').attr('rel', 'shadowbox[pics];height=' + picHeight + ';width=' + picWidth); 
      } 
); 

しかし、私IEで同じことをする方法が見つかりません。

+0

特にIEでは何が起こりますか? naturalWidthプロパティとnaturalHeightプロパティを探していますか? – EricLaw

答えて

3

document.getElementById("pic1img").widthを交換してください。

問題は、イメージがロードされたとIEが隠された画像の大きさをうまくできなくなるまで、私は

display: none 

に周囲のdivを設定したということでした。

ではなく

visibility: hidden 

を設定することで、これを解決しました。

+1

このトピックの詳細:http://blogs.msdn.com/b/ieinternals/archive/2011/03/14/internet-explorer-hidden-images-styled-with-display-none-always-have-zero- 0-height.aspx – EricLaw

+0

これに加えて、 'position:absolute'を使って、隠された画像が画面上のスペースを占めるのを防ぐことができます(ほとんどの場合)。 –

1

は、コードが実際にかつて働いていた私はフルサイズでサムネイルをロードしてからロードした後、その幅と高さを設定し始めた$('#pick1img').width()

+0

うん、ありがとう(それに応じて質問を編集しました) - まだJQueryを使用することを忘れることがあります。しかし、問題を助けません。 –

関連する問題