Проблема с фреймом и оверлей - PullRequest
1 голос
/ 01 февраля 2011

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

Сайт, на котором я тестирую, находится по адресу www.sycotickets.com/form.php.Вы можете проверить это и нажать на кнопку внизу, чтобы увидеть проблему.Я также узнал, что JavaScript может быть использован для встраивания.Кто-нибудь может подсказать мне в правильном направлении по обоим вопросам?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

Существует 2 возможных ответа при использовании AJAX для загрузки содержимого страницы с другого сервера

1) Оба сервера находятся в одинаковом домене (s1.example.com, s2.example.com), и в этом случае вы можете установить для домена значение просто example.com, что обеспечивает полную функциональность при вызовах AJAX.

2) Серверы находятся в совершенно другом домене - сервер, который предоставляет контент (в настоящее время для IFrame), должен предоставлять данные с использованием протокола JSONP (обратите внимание на P!), Это означает, что полученные данные загружаются в скрипт тег, который затем выполняется. Сами данные содержат вызов функции JS, например:

<code>{data: '<pre>Some Html
'}

фактически возвращается как:

<code>function SomeFuncNameSpecifiedInTheRequest({data: '<pre>Some Html
'});

Вместо того, чтобы делать вызов AJAX, вы динамически добавляете тег страницы на страницу, что-то вроде:

<script type="text/javascript" src="http:/www.example.com/GetMyData.php?WrapperFunction=SomeFuncNameSpecifiedInTheRequest">

Затем вы реализуете SomeFuncNameSpecifiedInTheRequest на своей странице и обрабатываете результаты, когда она вызывается. JQuery реализует эту функцию автоматически (по крайней мере, на стороне клиента).

См. здесь для получения дополнительной информации о JSONP и здесь для получения дополнительной информации о настройке домена

0 голосов
/ 01 февраля 2011

Ничего не поделаешь. Если он загружается с внешнего сайта, браузеры не позволяют разработчикам получать доступ к другим сайтам и изменять их, чтобы попытаться предотвратить атаки XSS. Вы могли бы попытаться подделать его, динамически перемещая фрейм в нужное вам положение и накладывая черный на клик на своем конце ... но это выглядит довольно глупо ...

...