2010-07-06 2 views
4

я открываю окно с именем, используя window.open функции:ссылка окна после родительской страницы изменилась

win = window.open("xxx.html", "mywin"); 

После этого я перехожу на другую страницу из родительского окна, и я хочу, чтобы решить, будет ли окно «mywin» по-прежнему открыт или нет.

Если бы я был на родительской странице, я бы использовал win.closed, но так как я изменил страницу, я потерял ссылку. Как я могу вернуть его? :)

Спасибо.

+0

«После что я перехожу на другую страницу из родительского окна "- Вы обновляете страницу с сервера или открываете новое окно? –

+0

@NM Я не открываю новое окно. Я меняю местоположение страницы, на которой я открыл дочернее окно. – Feyyaz

ответ

4

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

Во-первых, вы могли бы подойти к этому, позволяя дочернего окна поговорить с родительского окна, а не родителя к ребенку. Пока родительское окно потеряет ссылку на дочерний элемент, когда страница перейдет, ребенок все равно сможет вернуться на новую страницу (пока она все еще находится в том же домене) через window.opener. Ребенок мог использовать заданный интервал для доступа к открытому окну и установить статус «все еще открытый». Вы должны были бы закодировать его таким образом, чтобы иметь возможность обрабатывать не наличие документа во время переходной нагрузки, но он будет работать. Код будет примерно таким же, как показано ниже, но вы можете уточнить это, обработав нагрузку и выгрузив события родителя ребенком и только запустив таймер между переходами.

родительское окно (все страницы)

var childStatus = "unknown"; 

Детский Окно

var timerHandler; 

funciton ChildCallBack() 
{ 
    try 
    { 
    window.opener.childStatus = "open"; 
    } 
    catch(e) 
    { 
    } 
} 

timerHandler = window.setInterval(ChildCallBack, 100); 

function window_onclose() 
{ 
    try 
    { 
    window.clearInterval(timerHandler); 
    window.opener.childStatus = "closed"; 
    } 
    catch(e) 
    { 
    } 
} 

window.onclose = window_onclose; 

Во-вторых, и в идеале в крайнем случае, с другой стороны, довольно ужасно, альтернатива заключается в использовании IFrame. Поместите вашу страницу перехода в iframe, чтобы фактическая основная страница не изменилась и поэтому может поддерживать ссылку на ребенка. Iframe может быть достаточно большим, чтобы отображаться как полная страница. Это отвратительное взломанное решение, но оно также должно работать.

+0

Позволить ребенку говорить с родителем - хорошая идея :). Благодарю. – Feyyaz

0

Попробуйте использовать имя окна, второй параметр window.open метода, как имя переменной:

win = window.open("xxx.html", "mywin"); 

И тогда, когда вы хотите, чтобы закрыть окно:

mywin.close(); 
Смежные вопросы