GWT - вырваться из фрейма - PullRequest
       2

GWT - вырваться из фрейма

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

Мое приложение GWT добавляется в iframe.У меня есть кнопка в приложении, которая затем должна перейти на другую страницу.В настоящее время я делаю это так:

Window.Location.assign("http://testpage.com");

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

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

Спасибо за любые советы!

Ответы [ 3 ]

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

Я не верю, что в GWT есть встроенная функция, которую вы можете вызвать для этого.

Обычная идиома в JavaScript для этого выглядит следующим образом

if (top.location!= self.location) {    //test if in an iframe
    top.location = self.location.href; //if so, break out
}

Это не будетработать непосредственно в GWT, хотя вы могли бы поместить его на свою главную html-страницу, вероятно, в <head> до загрузки остальной части приложения - это сразу же выкинет вас из iframe вместо того, чтобы ждать загрузки приложения, ломаязатем снова дождемся загрузки приложения.

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

public native void breakOut() /*-{
    if ($wnd.top.location != $wnd.location) {
        $wnd.top.location = $wnd.location.href;
    }
}-*/

Обратите внимание на использование $ wnd для ссылки на объект окна приложения.См. http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html для более подробной информации о написании JSNI.Не ожидайте, что эта функция вернется - она ​​запускает браузер для выгрузки этой страницы и загрузки другой.

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

Вот настраиваемая версия присвоения, основанная на идее Колина, которая должна делать то, что вы намерены, она также будет работать, если вы не в фрейме:

public static native void assignTop(String newURL) /*-{
    $wnd.top.location.assign(newUrl);
}-*/

РЕДАКТИРОВАТЬ: упрощенная реализация, основанная на предложении Колина. спасибо!

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

Вы можете использовать Location.replace("http://testpage.com");, чтобы перенаправить браузер на другой URL с помощью GWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...