Заставить iframe загрузить полный кадр - PullRequest
1 голос
/ 11 октября 2008

У меня есть HTML-страница (например, welcome.html), которая содержит iframe для страницы, которую я не могу контролировать (например, app.html) Пользователь выполняет некоторые действия с помощью приложения в пределах iframe и нажимает кнопку «Отправить». Как только они это делают, они попадают на новую страницу (скажем, спасибо. Jsp), которая загружается в iframe. Есть ли способ, с помощью которого я могу принудительно загрузить thanks.jsp в полном кадре, а не щелкнуть по iframe после отправки? Помните, я не контролирую логику кнопки «Отправить» или app.html. Однако у меня есть контроль над welcome.html и thanks.jsp. Если возможно, я бы хотел придерживаться HTML и / или JavaScript. Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 11 октября 2008

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

Во-первых:

Если thanks.jsp запрашивается с помощью почтового запроса - перенаправьте его, чтобы представить страницу в качестве ответа на запрос получения.

Тогда:

Включить фреймбастер JavaScript:

<script type="text/javascript">
   if (self != top) { top.location.replace(location); }
</script>

Наконец:

Если у пользователя не включен JavaScript, убедитесь, что он больше не остается в кадре, чем он должен:

<base target="_top">
2 голосов
/ 11 октября 2008

На thanks.jsp вы можете поставить следующие JS:

// Parent window not the same as this one
if (self !=top) 
{
    top.location.href = self.location.href;
} 

Это будет работать при условии, что у вас thanks.jsp на том же сервере, что и исходная страница, содержащая фрейм, из-за той же политики происхождения .

Приведенный выше код проверяет URL страницы, на которой вы находитесь, а затем страницу, на которой он выполняется (thanks.jsp) - если они не совпадают, вы отправляете на URL thanks.jsp. Этот метод прекрасно работает, когда thanks.jsp является статической страницей, но не переносит с ней постданные и т. Д.

...