Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.focus()不';t从setInterval()开始工作_Javascript_Popup_Focus - Fatal编程技术网

Javascript window.focus()不';t从setInterval()开始工作

Javascript window.focus()不';t从setInterval()开始工作,javascript,popup,focus,Javascript,Popup,Focus,我正在努力使代码吹工作 然后,我想知道为什么window.focus()和window.blur()方法不起作用/只在输入按钮上起作用。当我从setInterval()调用时,它们不工作 例如,在下面的例子中,当我在HTML中按下按钮时,它会在第一次创建窗口,然后在第二次按下按钮时聚焦窗口 但是,我也设置了setInterval()使窗口成为焦点,但它不起作用。我可以在控制台上看到日志,因此setInterval函数工作正常,但win.focus()被忽略了 <head> ...

我正在努力使代码吹工作

然后,我想知道为什么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>

...
瓦尔温;
函数makePopup(){
如果(!win | | win.closed){
win=窗口。打开(“,”,“宽度=200,高度=200”);
win.blur();
}否则{
win.focus();
控制台日志(“打开”);
}
}
setInterval(函数(){makePopup();},4000);
因此,问题是:

  • window.blur()根本不起作用
  • focus()仅在从HTML按钮调用makePopup()时起作用,而在setInterval()中不起作用
  • 我正在用MacOSX测试Chrome和Safari

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


    提前感谢。

    浏览器知道有人单击链接打开弹出窗口与脚本触发弹出窗口之间的区别。为了防止恶意活动,许多浏览器阻止脚本弹出窗口


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

    我不确定,这可能是一个安全问题,但万一您不知道,您也可以执行
    setInterval(makePopup,4000)
    ,因为它只是您每次都要调用的函数。仅供参考,设置该间隔时,您不需要传入调用
    makePopup
    的函数,您只需直接传入标识符
    makePopup
    ,如下所示:
    setInterval(makePopup,4000)
    谢谢您的建议!是的,我知道这条路,但我只是习惯于这样写:)谢谢你的回复
    现在我从“localhost/”调用
    win.open(“test.html”,“width=200,height=200”)
    。它从脚本打开窗口,但不重新聚焦窗口一旦打开,然后我聚焦另一个窗口
    我想在弹出窗口打开后的特定时间段内使其处于活动状态。在弹出窗口中放入一些脚本,将焦点设置为自身。mmm。。我将setInterval(function(){window.focus()},4000)放在弹出的html中,但仍然没有按预期工作。不过还是要感谢迪奥德乌斯,我刚刚开始使用这个网站,所以还没有足够的声誉来投票,但我会尽快投票。