2009-04-27 5 views
1

저는 여러 iframe이있는 html 페이지를 보유하고있는 C# webbrowser를 보유하고 있습니다. 각 iframe에는 이미지가있는 임의의 html 파일이 들어 있습니다. img 태그에는 폭 또는 높이 속성이없는 경우가 종종 있습니다 (예 : <img src="someimage.jpg">).알 수없는 치수의 이미지를 보유하고있는 iframe의 크기를 적절하게 조절합니다.

콘텐츠를 기준으로 iframe의 크기를 조정하는 방법에 대해 읽었으며 jquery를 사용하여 작동하도록했습니다.

$(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 파일에 정의합니다 (웹 브라우저가 표시되고있는 것) :

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를 호출 다음 JQuery와 조각은 iframe 대응의 HTML에 존재 문서의 $ (document) .ready 이벤트. 이것은 효과적입니다 - 이미지가 없으면 문서의 준비 이벤트가 크기 조정을 트리거합니다. 이미지가있는 경우 이미지로드가 끝날 때마다 iframe의 크기가 올바르게 조정됩니다.

그러나 큰 이미지를로드하면 이미지가 완전히로드 될 때까지 iframe의 크기가 잘못 조정됩니다. 드물게 이미지 태그의 너비와 높이 속성을 가지고 작업 할 때가 있기 때문에 jquery를 사용하여 이미지의 readystatechange 이벤트를 청취 할 수 있다고 생각했습니다. 그리고 이미지가로드 될 때 이미지의 크기와 크기를 선택합니다. 이미지가로드되는 동안에도 iframe. 불행히도 적어도 IE7에서 readystatechange = loading은 이미지 다운로드가 완료된 후에 만 ​​발생합니다.

전체 다운로드가 발생하기를 기다리지 않고 단순히 "<img src="someimage.jpg">"으로 내 HTML에서 참조되는 이미지의 크기를 쉽게 감지 할 수있는 사람이 있습니까? 큰 이미지를 다운로드하는 데 시간이 오래 걸리는 경우에도 사용자가 모든 iframe을 읽을 수 있도록 모든 것을 정확하게 크기를 조정하여 최상의 사용자 환경을 제공하려고합니다.

감사합니다. 진

답변

1

이미지를 다운로드하기 전에 서버에 이미지를 요청하는 것이 좋습니다. 나는 이것을 사용했다. 닷넷, 아주 쉽다.