Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Высота iframe по контенту

#javascript #html5 #css3 #iframe


Друзья,перелопатил половину интернета, но рабочего решения так и не нашел. В общем,
в iframe необходимо загрузить сайт и взять его высоту, пробовал плагин iFrame Resizer,
высота не менялась, стандартные 150рх, пробовал easyXDM - ошибка, пробовал вот такую штуку

function doIframe() {
  o = document.getElementsByTagName('iframe');
  for (i = 0; i < o.length; i++) {
    if (/\bautoHeight\b/.test(o[i].className)) {
      setHeightIframe(o[i]);
      $(o[i]).load(function() {
        doIframe();
      });
    }
  }
}

function setHeightIframe(e) {
  if (e.contentDocument) {
    $(e).height(e.contentDocument.body.offsetHeight + 35);
  } else {
    $(e).height(e.contentWindow.document.body.scrollHeight);
  }
}

    


Ответы

Ответ 1



Если я правильно понял Ваш вопрос: Вы хотите загрузить в iframe некоторый контент, но проблема в том, что Вы не знаете высоту загружаемого контента, и соответственно не знаете какую высоту iframe-а Вам нужно указать. Я сталкивался с подобной проблемой, когда мы разрабатывали виджеты, например для edx. Вы не можете выставить высоту iframe во "внутренностях" iframe. Как вариант, Вы можете посчитать высоту во "внутренностях" iframe и передать ее в js который подключает iframe в родительском окне. Для того чтобы связать js во "внутренностях" iframe и js в родительском окне, мы использовали библиотеку от Mozilla jschannel. Обратите внимание, что высота загруженного контента не всегда будет одинаковой, к изменению высоты могут привести как изменение ширины окна браузера (если у Вас респонсив страница) так и действия пользователя внутри iframe - все эти кейсы можно решить добавляя новые события к jschannel. В случае если у Вас нет доступа к содержимому iframe и Вы хотите получить его высоту, к сожелению, я не знаю что Вам можно посоветовать, и вообще возможноли это.

Комментариев нет:

Отправить комментарий