window.focus () не работает из setInterval () - PullRequest
1 голос
/ 18 августа 2011

Я изо всех сил пытаюсь заставить код работать ...

Тогда мне интересно, почему методы window.focus () и window.blur () не работают / работают только с помощью кнопки ввода. Они не работают, когда я звоню из setInterval ().

Например, в приведенном ниже случае, когда я нажимаю кнопку в HTML, она создает окно в первый раз, а затем фокусирует окно со второго раза, когда я нажимаю кнопку.

Однако я также установил setInterval () для фокусировки окна, но это не работает. Я вижу журнал на консоли, поэтому функция setInterval работает правильно, но win.focus () каким-то образом игнорируется.

<head>
...
    <script>
    var win;
    function makePopup(){
        if (!win || win.closed) {
            win = window.open("","","width=200, height=200");
            win.blur();
        }else{
            win.focus();
            console.log("opened");
        }
    }
    setInterval(function(){makePopup();},4000);
    </script>
</head>

<body>
    <input type="button" onclick="makePopup()"/>
</body>

Итак, проблемы:

  1. window.blur () вообще не работает.
  2. window.focus () работает только тогда, когда я вызываю makePopup () из кнопки HTML, и не работает из setInterval ().

Я тестирую в Chrome и Safari с Mac OSX.

Если бы вы могли дать мне какое-то предложение, я действительно ценю это.

Заранее спасибо.

1 Ответ

2 голосов
/ 18 августа 2011

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

Указав URL-адрес, который находится в том же домене, что и размещенная страница, он должен работать.

...