window.focus()在setInterval()中不起作用

时间:2011-08-18 15:58:35

标签: javascript popup focus

我正努力让代码打击......

然后,我想知道为什么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()仅在我从HTML按钮调用makePopup()时起作用,并且不能从setInterval()起作用。
  3. 我正在使用Mac OSX在Chrome和Safari中进行测试。

    如果你能给我一些建议,我真的很感激。

    提前致谢。

1 个答案:

答案 0 :(得分:2)

浏览器知道某人点击链接打开弹出窗口和脚本触发时的区别。为了防止恶意活动,许多浏览器会阻止脚本弹出窗口。

通过指定与托管页面位于同一域中的URL,它应该可以正常工作。