Вызов функции при появлении полосы прокрутки в IFrame - PullRequest
2 голосов
/ 28 апреля 2010

Я получил IFrame, в событии onload я установил высоту кадра:

function resizeFrame() { $("#iframeID").height($("#iframeID").contents().find("body").outerHeight(true)); }

Проблема:
Когда содержимое фрейма увеличивается без обратной передачи (JavaScript или Async Postback с Ajax), появляется полоса прокрутки. Я нашел решение для Firefox:

document.getElementById("iframeID").contentWindow.addEventListener("overflow", resizeFrame, false);

Но я не могу найти решение для IE 7 + 8
У кого-нибудь есть идея?

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Возможно, вы можете использовать обработчик событий jQuery resize (), применяемый к телу iframe. Он предназначен для работы только с элементом окна, но , похоже, работает с любым элементом в IE .

0 голосов
/ 30 апреля 2010

К сожалению, применение его к телу iframe не сработало.
Но я нашел плагин, где вы можете применить его к любому элементу на сайте: http://benalman.com/projects/jquery-resize-plugin/

Итак, теперь это мой код (решение):

function initFrame() 
{      
  resizeAppFrame();

  if (navigator.userAgent.indexOf("MSIE") > 0)                          
    $(function() { $(appFrame.document.body).resize(resizeAppFrame) }) //IE
  else
    document.getElementById("applicationFrame").contentWindow.addEventListener("overflow", resizeAppFrame, false);  //FireFox
}
function resizeAppFrame()
{
  $("#iFrameID").height($("#iFrameID").contents().find("body").outerHeight(true));
}

...

<iframe name="appFrame" id="iFrameID" onload="initFrame();" frameborder="0" src="TestFrame.aspx" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...