2010-02-12 2 views
0

У нас есть требование к клиенту, которое меня насторожило, довольно смущающее.Странное поведение при попытке повторного использования всплывающего окна

Клиент имеет набор ссылок, которые необходимо открыть во всплывающем окне - если вы нажмете на любую из ссылок, он должен повторно использовать одно и то же всплывающее окно. Достаточно просто, я думал, так что я бросил что-то вроде этого вместе:

 
<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-адрес внутренней сети клиента по их требованию, поведение я вижу следующий образом:

  1. Нажмите на один из всплывающих ссылок (Всплывающая ссылка откроется в новом окне)

  2. Нажмите на другом всплывающих ссылках (ссылка заменяет страницу, открытую в первом всплывающем окне)

  3. Закрыть всплывающее окно.

  4. Нажмите один из всплывающих ссылок (не имеет значения, который откроется в новом всплывающем окне, как ожидается, )

  5. Нажмите на другом из всплывающих ссылок (всплывающее окно открывается в новом всплывающего окна , а не повторное использование всплывающего окна, как и ожидалось)

странная вещь, что если я пошагово яваскрипта кода в Firebug, он правильно попадает в ветви, если заявление, которое определяет, что всплывающее окно существует и не закрыт (поэтому его следует использовать повторно d), но строка кода:

 
popupWin.location.href = url; 

Окончание открытия по каким-либо причинам.

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

Большое спасибо за любую помощь.

Мустафа

+0

Может быть интересно добавить ссылку для тестирования на вашу страницу. Ссылка запустит скрипт, чтобы показать несколько предупреждающих ящиков со значением popupWin, popupWin.location.href и popupWin.closed. Нажмите тестовую ссылку до и после того, как вы нажмете обычные ссылки, а всплывающее окно открыто и после закрытия. Может быть, появится подсказка. – Ray

ответ

0

Не эта функция присуща HTML? Разве это не работает без javascript?

+1

Да, я просто протестировал его. Удалите javascript, он должен работать нормально. –

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