Закройте всплывающее окно, если оно существует
С помощью некоторого javascript я открываю всплывающее окно no prob, используя:
function myPopup2(x){
if (x==1)
{
myWindow = window.open( "timer.html", "", "height = 150, width = 300" );
}else
{
myWindow.close();
}
}
Затем я запускаю какой-то PHP скрипт, который обновляет перезагружает страницу.
Когда я позже захожу, чтобы закрыть всплывающее окно-это не так, потому что страница была перезагружена, и переменная myWindow исчезла. "myWindow" не определен-это ошибка javascript.
Кто-нибудь знает, как я могу обойти это?
4 ответа:
Если вы даете своему окну имя, когда вы открываете его, можно получить дескриптор к окну позже.
function myPopup2(x){ if (x==1) { myWindow = window.open( "timer.html", "windowName", "height = 150, width = 300" ); }else { if (!myWindow) { myWindow = window.open("", "windowName"); } myWindow.close(); } }
Как описано здесь: http://www.faqts.com/knowledge_base/view.phtml/aid/1460
Окно.open() принимает второй параметр, который является именем окна. При обновлении вы можете проверить состояние этого окна и при необходимости закрыть его. Как описано в ссылке, нет прямого способа проверить наличие окна после обновления, поэтому вам нужно сделать что-то вроде этого:
var win = window.open ('', 'windowName')
И затем действуйте на победу.
(edit: у меня изначально была вторая идея, связанная с печеньем, но Я не думаю, что это действительно спасает вас от чего-либо, так как вы все еще должны сделать выше, чтобы получить доступ к окну.)