получить динамически высоту содержимого iframe с помощью javascript - PullRequest
0 голосов
/ 30 июня 2011

Сначала я провел исследование по этой теме, прочитав и применив так много JS, я опубликовал эту проблему,

Я пытаюсь применить iframe, в котором я получаю контент из другого домена.

Я пытаюсь установить высоту iframe на основе высоты прокрутки содержимого внутри iframe, но не смог сделать это

Я пытался использовать событие onload iframe, но не смог ...

, пожалуйста, помогите мне, мне нужно динамически установить высоту iframe любым необходимым способом.

если код будет предоставлен в Javascript, который будет мне полезен

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 30 июня 2011

По соображениям безопасности невозможно взаимодействовать с фреймом в другом домене.

Это включает измерение его содержимого.

1 голос
/ 30 июня 2011

Если вы можете изменить содержимое внутри iframe, например, если вы являетесь автором или можете связаться с автором этого содержимого iframe, вы можете настроить трюк с двойным iframe, чтобы отправить высоту iframe на главныйpage.

Вот как это можно сделать:

  1. На главной странице (AAA.com/mainpage.htm) вы вставили iframe (BBB.com/mainframe.htm).
  2. Вместе с главной страницей вы создаете еще одну страницу (AAA.com/heightproxy.htm)
  3. Вы делаете так, что BBB.com/mainframe.htm создаст невидимый iframe с AAA.com/heightproxy.htm внутри.

    Результат: BBB.com/mainframe.htm при событии onload может загрузить его iframe AAA.com/heightproxy.htm с некоторыми параметрами, добавленными в URL.Например, он может поместить свою новую высоту / ширину в параметры.Кроме того, AAA.com/heightproxy.htm может получить доступ ко всем функциям JS в AAA.com/mainpage.htm - так как они находятся в одном окне браузера и совместно используют один и тот же домен.Таким образом, он может перенаправить полученную ширину и высоту на главную страницу.

Отказ от ответственности: этот прием возможен только в том случае, если вы можете изменить источник фрейма, который необходимо включить.

1 голос
/ 30 июня 2011

@ SLaks правильно. Если содержимое iframe находится в другом домене, вы не можете получить к нему доступ напрямую.

Что вы могли бы сделать (и то, что я недавно только что сделал), это настроить прокси-сервер, который извлекает контент через cURL (в php, но я уверен, что любой язык на стороне сервера имеет что-то эквивалентное). Тогда содержимое iframe находится на той же странице, и вы можете получить доступ к его высоте с помощью:

var _iframeHeight = $('#iframe').contents().find('body').height();
$('#iframe').height(_iframeHeight);

Также я забыл упомянуть (@SLaks спасибо за напоминание). Вам нужно будет проверить все теги script / style / image и проверить / добавить абсолютный URL-адрес. Прокси может быть довольно хитрым, но он сделает это.

0 голосов
/ 30 июня 2011

Вы не можете взаимодействовать с главной страницей из iFrame, если контент загружается с другого URL (вы можете измерить высоту из iframe, но не можете передать ее на главную страницу).Это можно изменить, загрузив контент с помощью простого прокси-скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...