私はいくつかの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の残りの部分を読むことができるように、すべてを正しくサイジングすることによって最高のユーザーエクスペリエンスを提供しようとしています。
ありがとうございました! ジーン