JavaScript能否检测通过window.open()打开的窗口的onblur()?

JavaScript能否检测通过window.open()打开的窗口的onblur()?,javascript,Javascript,我想做的是使用window.open创建一个新窗口,然后当新窗口打开时,我想检查该窗口是否始终处于活动状态 例如:我有 myNewWindow = window.open(document.getElementById("inputbox").value).focus(); 一旦这个窗口打开,如果myNewWindow失去焦点,我想增加变量increase的值 我正在做: if(myNewWindow.onblur()){ increment value... } setTimeout

我想做的是使用
window.open创建一个新窗口,然后当新窗口打开时,我想检查该窗口是否始终处于活动状态

例如:我有

myNewWindow = window.open(document.getElementById("inputbox").value).focus();
一旦这个窗口打开,如果
myNewWindow
失去焦点,我想增加变量increase的值

我正在做:

if(myNewWindow.onblur()){
    increment value...
}
setTimeout('myNewWindow.close()',3000); // closing window after 3 seconds. So, I'm really trying to check if the window was in focus for those 3 seconds.
然而,无论我怎么做,
onblur
似乎都不起作用。但是,窗户是关着的。 有什么想法吗?我只想知道新打开的窗口是最小化了还是有些不对焦了


很容易检测运行JS的窗口是否失去焦点。而在我的情况下,这似乎不起作用。例如:

从第1页开始,您不能直接设置或订阅第2页上的事件。但是,您可以使用window.postMessage之类的工具在它们之间传递消息。

出于安全考虑,这些操作非常困难。我相信有一种类似套接字的方法可以做到这一点。永远不要将字符串传递给
setInterval()
setTimeout()
。这样做与使用
eval()
一样糟糕,而且在使用变量时会导致代码无法读取,甚至可能不安全,因为您需要将变量插入字符串中,而不是传递实际的变量。正确的解决方案是
setInterval(function(){/*您的代码*)},毫秒)。这同样适用于
setTimeout()
。如果您只想在没有任何参数的情况下调用单个函数,还可以直接传递函数名:
setInterval(someFunction,毫秒)
(注意函数名后面没有
()
),所以根本不能这样做吗?因为我几乎可以用新窗口做其他任何事情,比如调整大小,间隔一段时间后关闭它等等。但是,检查窗口是否始终处于活动状态似乎不起作用。你是说我正在尝试找到一个根本不存在的解决方案哦,是的……我想你可以从第1页开始与第2页进行交流,但是我还没有找到关于我试图解决的问题的任何信息。解决方案是可能的,只是以不同的方式。您需要在第2页上使用一些js来处理来自第1页的“消息”事件并返回到第1页。一个想法是在第2页的窗口对象中添加一个“blur”事件侦听器。当出现模糊时,即page2失去焦点,它会向page1发送一条postMessage。当我只处理1个js文件时,我如何为page2添加js,而这个js文件负责从用户处打开URL,然后在几秒钟后关闭窗口??我是一个新手,所以,如果这个问题是平庸的,请原谅。一点也不是平庸的问题。这仅在您可以控制加载到第2页的文档的前提下起作用。如果page2是第三方网站,则无法将javascript插入其中。page2(在page1上通过window.open打开)必须是用户在page1上的表单中输入的URL。所以,9/10次它将成为一个我无法控制的站点。为了更清楚,我必须从第1页打开第2页。只有在其他浏览器或窗口打开时,第2页才应关闭。我之前曾发过一篇帖子,问是否有可能检测到一个新的窗口或浏览器是否已经打开,并因此受到了嘲笑。所以,我想,如果这有意义的话,也许用onblur和focus检查可能会有所帮助。