Установите для iframe высоту содержимого для удаленного содержимого - PullRequest
7 голосов
/ 21 января 2009

На вопрос о том, как сделать так, чтобы ваш iframe соответствовал 100% вашего контента (используя JavaScript), уже дан ответ на форуме ... для iframes, отображающих контент только из того же домена .

Мои вопросы: возможно ли изменить размер iframe, чтобы он соответствовал содержанию, если атрибут iframe src предназначен для страницы за пределами домена страницы, содержащей фрейм? Функции безопасности браузера, связанные с межсайтовым скриптингом, не позволяют мне получить доступ к объекту документа для iframe.

Я ищу любое творческое решение. Одна из моих мыслей состояла в том, чтобы как-то обнаружить, что полосы прокрутки были видны в iframe, и постепенно увеличивать высоту, пока их не было. К сожалению, я не могу найти способ обнаружить видимые полосы прокрутки. Идеи?

Обратите внимание, что я ищу решение на стороне клиента.

Ответы:


Dave

Проблема все еще существует - я не знаю высоту удаленного документа заранее, поэтому не могу установить его из базы данных или значения строки запроса.


dusoft

100% для iframe в CSS не будет устанавливать для него 100% содержимого внутри для iframe, но относительно страницы или содержащего элемента (то есть, div или чего-то).

Ответы [ 6 ]

1 голос
/ 04 ноября 2010

(Мой ответ на аналогичный вопрос )

невозможно сделать это без какого-либо контроля над фреймом страницы из-за модели безопасности браузера. Если бы это было возможно, это было бы проблемой безопасности и должно было бы быть исправлено.

Хотя уведомление сайта встраивания о высоте сторонней веб-страницы, когда она встроена в страницу, кажется безвредным, это может привести к утечке информации на сайт встраивания, которую пользователь браузера хочет сохранить в тайне. Например, http://www.facebook.com/ отображается по-разному в зависимости от того, вошли вы в систему или нет, поэтому, если мой веб-сайт может работать с высотой <iframe src="http://www.facebook.com/">, тогда я могу определить, являетесь ли вы пользователем Facebook или нет вероятно, не хочу, чтобы я знал.

Утечка информации будет похожа на печально известную утечку истории CSS , которую поставщики браузеров должны были подключить.

1 голос
/ 05 февраля 2009

Можно ли изменить размер iframe, чтобы он соответствовал содержанию, если атрибут iframe src предназначен для страницы за пределами домена страницы, содержащей фрейм?

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

Решение заключается в обходе модели безопасности путем размещения самого iframe-содержимого страницы iframe на том же сервере, что и родительская страница, с которой он может взаимодействовать. Я ответил на вопрос, аналогичный этому, до здесь , в котором достаточно подробно рассказывается о плюсах и минусах настройки всего этого.

Предостережение в отношении описанного подхода заключается в том, что у вас должны быть средства для передачи содержимого iframe себе в iframe страницу на родительском сервере. Обычно это достижимо, когда контент iframed существует как часть согласованного партнерства между сайтами, но YMMV.

0 голосов
/ 04 октября 2011

не лучшие решения, но вы можете попробовать:

JavaScript для написания iframe, в приложении iframe установите текущую высоту в url # h700 для 700 пикселей и т. Д .; затем используйте цикл, чтобы прослушать это изменение на хост-сайте "в javascript", чтобы прочитать src = "url # h700" и установить высоту iframe.

0 голосов
/ 02 ноября 2010

Это теоретически, поскольку я не проверял это:

1) PHP сохраняет удаленную страницу в локальный HTML-файл, используя file_get_content() или используя CURL. 2) Javascript загрузить локальный файл в IFrame - теперь это локально и вопросы безопасности не применяются.

Если есть javascript vars или Session vars (которые не могут быть извлечены из удаленного контента), вы можете по крайней мере использовать эту технику для запроса высоты документа вашего локального файла, соответственно установить iframe, затем загрузить удаленный URL в измененный размер IFrame.

Cavat: у вас нет возможности узнать URL для изменений страницы на удаленной странице, поэтому вы можете использовать эту технику только на первой странице. Если все удаленные страницы имеют одинаковую высоту, это не проблема.

0 голосов
/ 21 января 2009

как насчет использования 100% в CSS? полосы прокрутки могут быть отключены в iframe, но тогда пользователь не сможет прокручивать.

Это предотвращение JS / XSS, поэтому пройдите через это и попробуйте извлечь контент со стороны сервера и передать его через локальное соединение.

0 голосов
/ 21 января 2009

Похоже, вы пытаетесь обойти функцию безопасности, которая была установлена ​​по уважительной причине ...

Изменение размера должно выполняться скриптом? Вы можете перенаправить на страницу, где размер iframe берется из строки запроса, базы данных, файла конфигурации и т. Д.

...