2009-04-27 1 views
1

私はいくつかのiframeを持つhtmlページを保持するC#webbrowserを持っています。各iframeは任意のhtmlファイルを保持しています。 imgタグには幅や高さの属性はありません(たいていは<img src="someimage.jpg">です)。未知の寸法の画像を保持するiframeのサイズを適切に調整する

コンテンツに基づいてiframeのサイズを変更する方法については、jqueryを使用して動作するようになっています。次のjQueryスニペットは、IFRAMEのHTMLに存在している:私も親からDoResizeFrameを呼び出す

function DoResizeFrame(fr) { 
     if (fr && fr.Document && fr.Document.body) { 
      fr.style.height = fr.Document.body.scrollHeight + 'px'; 
      fr.style.width = fr.Document.body.scrollWidth + 'px'; 
     } 
    } 

:DoResizeFrameは、親htmlファイル(Webブラウザーが表示されている1)で定義されている

$(document).ready(function() { 
    $('img').each(function(){ 
     $(this) 
      .bind('load readystatechange', function(e) { 
       var iframes = window.top.document.getElementsByName(window.name); 
       if (iframes.length == 1) { 
        window.top.DoResizeFrame(iframes[0]); 
       } 
      }) 
    }); 

ドキュメントの$(document).readyイベント。これはうまくいきます - イメージがない場合、ドキュメントのreadyイベントはサイズ変更をトリガします。イメージがある場合、イメージのロードが完了するたびに、iframeのサイズが適切に変更されます。

しかし、大きな画像を読み込むと、画像が完全に読み込まれるまで、iframeのサイズが不適切になります。私はめったに画像タグの幅と高さの属性を持っているので、jqueryを使って画像のreadystatechangeイベントを聞くことができたと思いました。画像が読み込まれているときは、画像のサイズと適切なサイズイメージがまだ読み込まれている間でもiframeを返します。残念ながら、少なくともIE7では、readystatechange =ローディングは、イメージのダウンロードが完了した後にのみ発生します。

私は自分のHTMLで参照されている画像のサイズを「<img src="someimage.jpg">」で単にダウンロードするのを待たずにどのように検出できるのでしょうか?私は大規模なイメージがダウンロードするのに時間がかかる場合でも、ユーザーがiframeの残りの部分を読むことができるように、すべてを正しくサイジングすることによって最高のユーザーエクスペリエンスを提供しようとしています。

ありがとうございました! ジーン

答えて

1

確実に確かめるには、ダウンロードする前に画像のサイズをサーバーに問い合わせてください。私は.netを使ってこれをやった。それはかなり簡単だ。