2013-02-28 2 views
1

У меня есть это дочернее окно и условие, которое предотвращает перезагрузку окна, если «отправить» снова щелкнуто, пока окно все еще открыто с переменной «myStatus», равной «обработке». Проблема в том, что, если дочернее окно открывается, а затем родительская страница обновляется, а «отправить» снова нажимается, переменная childPage теряется и позволяет дочерней странице перезагружаться. есть ли способ решить эту проблему? Благодарю.остановить перезагрузку дочернего окна, даже если родительское окно перезагрузилось

var childPage = null; 

$('#send').click(function(){ 

    if(childPage && !childPage.closed && childPage.myStatus == "processing"){ 
     alert('child window is open and processing'); 
    }else{ 
    childPage = window.open("test.html","send","width = 300,height=300"); 
}): 
+0

останавливает parentpage от перегрузки вариант? Вы можете использовать 'onbeforeunload' на родительской странице, чтобы условно проверить, является ли' childPage.myStatus == "обработка" ' –

+0

благодарностью за это предложение, но нет, на самом деле, вся причина, по которой открывается страница в качестве дочернего, заключается в предоставлении пользователю опции для просмотра, пока дочерняя страница обрабатывает – user2014429

ответ

3

У меня была такая же проблема

Я решил его, используя два способа связи

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

Код:

в ParentWindow

window.onbeforeunload =function(){ 
    childPage.reconnect(); 
} 

window.saveChildReference =function (ref){ 
    childPage = ref; 
} 

в дочернем окне

window.reconnect = function(){ 
    var i =0; 
    var timer = setInterval(function(){ 
    i++; 
     if(window.opener && window.opener.saveChildReference){ 
       window.opener.saveChildReference(window); 
      clearTimeout(timer); 
     } 

     if(i > 100){ 
     clearTimeout(timer);// stop trying as parent may be closed. 
     } 

    }, 100); 

}; 
+0

фантастическое решение, спасибо за то, что поделились преимуществами вашего опыта :) – user2014429

Смежные вопросы