2009-04-27 104 views
1

我有一个C#webbrowser,它包含具有多个iframe的html页面。每个iframe都包含一个任意的html文件,通常包含图像。 img标签通常没有任何宽度或高度属性(即它通常只是<img src="someimage.jpg">)。正确调整容纳未知尺寸图像的iframe

我已阅读过如何根据其内容来确定iframe的大小,并且已经使用jquery进行了工作。下面的jquery片段是存在于iframe的HTML:

$(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]); 
       } 
      }) 
    }); 

DoResizeFrame在父HTML文件中定义(即web浏览器被示出其一):

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文档的$(document).ready事件。这很好 - 如果没有图像,文档的准备就绪事件会触发调整大小。如果存在图像,则每次图像加载完成时,iframe都会正确调整大小。

但是,加载大图像会导致iframe尺寸不正确,直到图像完全加载。由于我很少在图像标签中使用宽度和高度属性,我想我可以使用jquery来听图像的readystatechange事件,并且在“加载”时,选择图像的大小和大小即使在图像仍在加载时,iframe也是如此。不幸的是,至少在IE7中,readystatechange = loading仅在映像完成下载后发生。

有没有人有任何想法,我可以通过“<img src="someimage.jpg">”简单地检测到我的html中引用的图像的大小,而无需等待整个下载的发生?我试图通过正确确定一切大小来提供最佳的用户体验,以便用户可以阅读iframe的其余部分,即使大图片需要一段时间才能下载。

谢谢! jean

回答

1

一个可靠的方法是确保在下载之前向服务器询问图像的大小。我已经使用.net完成了,这很容易。