html src タグで、指定サイズ以上の画像を縮小表示
src タグで、指定サイズ以上の画像を縮小表示しようと思い、調べてみたら、ブラウザ毎で動作がマチマチ
なので、ブラウザ依存しそーにないのを作成
まずは、html側
javascript 側
これは、srcプロパティのみを変更すると、ロード前に表示されていたイメージの width height 情報が保持されてしまうため、タグそのものを生成し直して、オリジナルのサイズを取得
img タグには、読み込み完了時にサイズ変更させるため、onload イベントに setimagesize(); を入れておき サイズ変更前が(IEで)表示されないように style=display:none で生成する
後は、setimagesize関数 で、style=diplay:block で表示させ、直後にサイズを変更(サイズを変更後に表示させると、IEで正しいサイズが取得できなかったりする)
firefox12, ie8, Opera11 で確認
なので、ブラウザ依存しそーにないのを作成
まずは、html側
ここは、フツーですが、div(spanでもよいと思う)タグで、img タグを包んでおく
javascript 側
function loadimage(linkname){ document.getElementById('imgdiv').innerHTML = '<img src="' + linkname +'" border=0 id="img" onload="setimagesize();" style="display:none;"/>'; } function setimagesize(){ var image = document.getElementById('img'); image.style.display = 'block'; if( image.width > 800 ){ image.width = 800; } if( image.height > 600 ){ image.height = 600; } }loadimage関数 でimgリンクをロードさせるが、div の innerHTML を全て書き換えてしまう
これは、srcプロパティのみを変更すると、ロード前に表示されていたイメージの width height 情報が保持されてしまうため、タグそのものを生成し直して、オリジナルのサイズを取得
img タグには、読み込み完了時にサイズ変更させるため、onload イベントに setimagesize(); を入れておき サイズ変更前が(IEで)表示されないように style=display:none で生成する
後は、setimagesize関数 で、style=diplay:block で表示させ、直後にサイズを変更(サイズを変更後に表示させると、IEで正しいサイズが取得できなかったりする)
firefox12, ie8, Opera11 で確認
コメント