У нас есть требование к клиенту, которое меня насторожило, довольно смущающее.Странное поведение при попытке повторного использования всплывающего окна
Клиент имеет набор ссылок, которые необходимо открыть во всплывающем окне - если вы нажмете на любую из ссылок, он должен повторно использовать одно и то же всплывающее окно. Достаточно просто, я думал, так что я бросил что-то вроде этого вместе:
<html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> var popupWin = null; function openWindow(url) { if (popupWin == null) { popupWin = window.open(url,'p2p',''); } else { if (!popupWin.closed) { popupWin.location.href = url; } else { popupWin = window.open(url,'p2p',''); } } popupWin.focus(); } </script> </head> <body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" bgcolor="#ffffff"> <ul> <li><a href="http://www.google.com" target="p2p" onclick="openWindow(this.href);return false;">Google</a></li> <li><a href="http://www.facebook.com" target="p2p" onclick="openWindow(this.href);return false;">FB</a></li> <li><a href="http://www.apple.com" target="p2p" onclick="openWindow(this.href);return false;">Apple</a></li> <li><a href="http://www.espn.com" target="p2p" onclick="openWindow(this.href);return false;">ESPN</a></li> </ul> </body> </html>
Если положить, что в HTML-файл, все ведет себя, как и ожидалось.
Моя проблема заключается в том, что, когда я использую URL-адрес внутренней сети клиента по их требованию, поведение я вижу следующий образом:
Нажмите на один из всплывающих ссылок (Всплывающая ссылка откроется в новом окне)
Нажмите на другом всплывающих ссылках (ссылка заменяет страницу, открытую в первом всплывающем окне)
Закрыть всплывающее окно.
Нажмите один из всплывающих ссылок (не имеет значения, который откроется в новом всплывающем окне, как ожидается, )
Нажмите на другом из всплывающих ссылок (всплывающее окно открывается в новом всплывающего окна , а не повторное использование всплывающего окна, как и ожидалось)
странная вещь, что если я пошагово яваскрипта кода в Firebug, он правильно попадает в ветви, если заявление, которое определяет, что всплывающее окно существует и не закрыт (поэтому его следует использовать повторно d), но строка кода:
popupWin.location.href = url;
Окончание открытия по каким-либо причинам.
Итак, любая идея, что происходит? Я догадываюсь, что что-то странное на страницах, которые клиент хочет, чтобы я всплывал, в какой-то таинственной манере закручивает вещи, но я не могу понять, что это такое. Хотел бы я предоставить вам ссылки, но, к сожалению, они частные.
Большое спасибо за любую помощь.
Мустафа
Может быть интересно добавить ссылку для тестирования на вашу страницу. Ссылка запустит скрипт, чтобы показать несколько предупреждающих ящиков со значением popupWin, popupWin.location.href и popupWin.closed. Нажмите тестовую ссылку до и после того, как вы нажмете обычные ссылки, а всплывающее окно открыто и после закрытия. Может быть, появится подсказка. – Ray