Как jQuery может предотвратить повторное открытие нового окна? - PullRequest
0 голосов
/ 20 февраля 2012

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

$(document).bind('keyup', function(e){
    if(e.which==113) {
        window.open('newPage.htm','_blank','','false');
    }
});

Теперь я хочу запретить пользователю открывать новое окно, пока предыдущее еще открыто.Как я могу расставить все точки?

Ответы [ 4 ]

2 голосов
/ 20 февраля 2012
var opened = null;
$(document).bind('keyup', function(e){
    if (e.which == 113 && (!opened || !opened.window))
        opened = window.open('newPage.htm','_blank','','false');
​});​
0 голосов
/ 20 февраля 2012

Когда окна закрыты, что происходит с window.document? Становится ли оно нулевым, может быть, вы можете проверить его по нулевому значению.

var popupWindow;

$(document).bind('keyup', function(e){
    if(e.which==113 && (!popupWindow || !popupWindow.document)) {
        popupWindow = window.open('newPage.htm','_blank','','false');
    }
});
0 голосов
/ 20 февраля 2012

Дайте вашему окну имя как

var mywindow = window.open("foo.html","windowName");

Затем вы можете проверить, закрыто ли окно, выполнив

if (mywindow.closed) { ... }
0 голосов
/ 20 февраля 2012

Вы можете попробовать это ..

    var windowOpened=false;

    $(document).bind('keyup', function(e){
        if(e.which==113 && !windowOpened) {
            window.open('newPage.htm','_blank','','false');
            windowOpened=true;
        }
    });




   In the newPage.htm add code to make windowOpened=false when u close that window.


< html> 
< head>
< title>newPage.htm< /title>
<script>
function setFalse()
{
  opener.windowOpened = false;
  self.close();
  return false;
}
</script>
< /head>
< body onbeforeunload="setFalse()">
< /body> 
< /html> 
...