Свойство высоты элемента HTML не установлено Internet Explorer - PullRequest
0 голосов
/ 06 апреля 2009

Я написал скрипт Javascript, который автоматически изменяет высоту IFrame в зависимости от его содержимого. Это делается, как только создается содержимое страницы в рамке; в Firefox нет проблем, но в IE скрипт выполняется правильно, но никакого эффекта не видно: метод вызывается в функции обратного вызова. Любые предложения? Если я выполняю метод с помощью кнопки, он работает отлично, и размер кадра изменяется.

У меня нет кода прямо передо мной; метод изменения размера выглядит следующим образом:

function resizeFrame(){
    var frame = parent.document.getElementsById(window.me);
    frame.style.height = document.offsetHeight;
}

И вызывающая функция выглядит так:

//init function
bunding.doSomeWork(callbackFunction);
...

function callbackFunction()
{
    //does some HTML output
    resizeFrame();
}

Я использую библиотеку Salesforce Ajax.

Ответы [ 2 ]

1 голос
/ 06 апреля 2009

Трудно действительно отладить ваш код, не видя его, но следующий пример хорошо работает для меня в IE и Firefox.

<!DOCTYPE html>
<html>
<head>
  <title>so-iframeResize</title>
  <script type="text/javascript" >

    onframeload=function(iframe) {
      var doc = iframe.contentWindow.document;
      iframe.style.height = Math.max(
        doc.getElementsByTagName("html")[0].offsetHeight,
        doc.body.offsetHeight // IE prefers this value
      ) + "px";
    };

  </script>
</head>
<body>
  <div id="page">
    <iframe src="about:blank" onload="onframeload(this)">
    </iframe>
  </div>
</body>
</html>
1 голос
/ 06 апреля 2009

Я обнаружил, что в некоторых случаях в IE свойства, такие как offsetHeight, clientHeight и scrollHeight, устанавливаются неправильно при добавлении нового содержимого. Мне пришлось использовать setTimeout, чтобы перекрасить дисплей, прежде чем я смог получить точные значения из таких свойств.

...