Как я могу динамически изменить размер своего iframe, избегая ограничений междоменной безопасности браузера? - PullRequest
2 голосов
/ 21 декабря 2010

У нас есть встраиваемый значок, который создает фрейм.Это должен быть динамический размер;он изменяет размер в зависимости от данных, загруженных из стороннего API или нашей базы данных.Так что неизвестно, какая высота будет перед загрузкой.

Он вызывается с помощью тега, который загружает скрипт с нашего сервера, который создает iframe, установленный на конкретный src.

На моемна собственной машине, в пределах iframe я могу сделать

window.parent.document.getElementById('my_frame').style.height=new_calculated_height+'px';

, но, конечно, когда она встроена в страницу, отличную от iframe src, происходит сбой из-за ограничений между доменами (ошибка «небезопасная попытка доступа» в FF и т. д..).

Поскольку мы уже загружаем скрипт на страницу хоста с полным доступом, это немного глупо.

По сути, мне нужно получить переменную, новую высоту, из iframeна страницу хоста.

Могу ли я сделать это наоборот?Есть ли какая-либо функция на странице хоста, которая спрашивает в iframe, что это элемент offsetHeight?

Ответы [ 3 ]

7 голосов
/ 21 декабря 2010

Это может быть реальная боль в работе, чтобы получить кросс-браузер.

Я настоятельно рекомендую вам использовать easyXDM (http://easyxdm.net/).. Это библиотека JavaScript, которая использует транспорт PostMessage в современных браузерах и использует некоторые ниндзя JavaScript в старых браузерах.

Библиотека позволяет устанавливать связь между Iframe и его родителем, даже если они не находятся в одном домене.

Библиотека поддерживает вплоть до IE6!

Редактировать: На самом деле есть пример динамического изменения высоты IFrame после загрузки контента: http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/

  • Christian
0 голосов
/ 21 декабря 2010

В зависимости от простоты страницы, которую вы пытаетесь загрузить, вы можете попробовать загрузить ее с помощью PHP и открыть некоторые переменные при построении HTML (если это даже вариант, конечно).

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

0 голосов
/ 21 декабря 2010

Хотя у меня нет особого опыта в этой ситуации, ссылаться на следующее не повредит: Изменение размера междоменного фрейма

...