2011-01-31 4 views
1

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

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

+0

Какой браузер вы тестирования в? В Firefox, «Какие функции вы хотели бы видеть», спрятан в нижней части экрана ... – Basic

+0

Я использую google chrome – sammville

ответ

0

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

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

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

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

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

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

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

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

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

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

+0

Я не использую ajax для загрузки содержимого. Он встроен в iframe. – sammville

+0

@sammville Я понимаю это, но по причинам, упомянутым в другом ответе, IFrame я просто это - рамка, вы не можете вырваться из нее. Единственное, что вы можете сделать, это использовать Javascript и AJAX для загрузки содержимого непосредственно на главную страницу. Это лучший пользовательский интерфейс, у вас больше контроля, и это также намного лучше.IFrames считаются злыми :) – Basic

0

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

+0

, это два моих сайта! сайт доставки и сайт, который я использую для тестирования. Оверлей загружается с другого сайта, но он не работает, когда я вставляю его в другую страницу. – sammville

+0

Возможно, мне что-то не хватает ... но исходный код показывает, что iframe не находится в одном домене? У вас есть ваш основной домен: «sycotickets.com», а в источнике iframe говорит: «poplytics.com». Это неправильно? –

+0

да, это правильно. Я контролирую эти два сайта. Я тестирую poplytics.com на sycotickets.com – sammville