javascript изменяет размер iframe высота динамически - PullRequest
0 голосов
/ 11 мая 2011

У меня проблема с изменением размера iframe, чтобы он соответствовал содержимому страницы фрейма.Я использовал предложение, которое нашел здесь, для динамического изменения размера фрейма.

На страницах моего фрейма у меня есть

<body onload='parent.resizeIframe(getDocHeight())'>

function getDocHeight() {
var D = document;
alert(D.URL);
return Math.max(
    Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
    Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
    Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);

}

И на странице, содержащей iframeУ меня есть это

function resizeIframe(newHeight) {
  var showsFrame = document.getElementById('frm');
  showsFrame.style.height = parseInt(newHeight) +'px';
}

Функция вызывается правильно на каждой странице, но по какой-то причине передаваемый параметр 'newHeight' сохраняет наибольшее значение высоты.Например, если у меня есть 2 фрейма страницы, одна с высотой прокрутки 300px, а другая с 500px.Когда я впервые нажимаю на ссылку, чтобы загрузить страницу 300px, она работает нормально, но если я щелкаю ссылку на страницу 500px, а затем пытаюсь вернуться на страницу 300px, значение «newHeight» остается равным 500. Есть идеи?ТИА

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Я нашел проблему, с которой столкнулся, для всех, кто испытывает то же самое. Поскольку на страницах моего фрейма не было большого количества контента, scrollHeight сообщал о длине всего документа, а не обрезал там, где остановился мой контент. Вместо того, чтобы пытаться вычислить scrollHeight, я просто искал offsetHeight, который был правильной высотой, которую я искал. Firebug - хороший инструмент для проверки DOM каждой страницы и просмотра значений каждого атрибута без необходимости писать сообщения отладки. Я вставил эту строку в страницу каждого кадра

<body onload='parent.resizeIframe(getDocHeight())'>

и в отдельном файле js у меня есть этот код для расчета высоты.

function getDocHeight() {
var D = document;
return Math.max(
   Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
);
0 голосов
/ 11 мая 2011

Попробуйте с JQuery

         function resizeIframe(newHeight) {
              $('#iframeId').attr('height',newHeight); 
                               or
              $("#frameId").height(newHeight);
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...