点击后,我用window.open打开多个窗口。 我想知道,10秒后,哪个窗口仍然打开。 有没有办法唯一地识别我刚刚打开的窗口?
我使用下面的代码,但是如果我打开一个窗口,关闭它,然后打开另一个窗口,代码将抛出警告“窗口仍然打开”两次。 我理解为什么,但有一种简单的方法可以识别窗口,所以我可以检查var_win.closed是否为我想要的窗口,而不是最后一个打开的窗口?
<div class="get_link" data-url="http://www.yahoo.com">Window 1</div>
<div class="get_link" data-url="http://www.yahoo.com">Window 2</div>
<div class="get_link" data-url="http://www.google.com">Window 3</div>
<div class="get_link" data-url="http://www.space.com">Window 4</div>
使用Javascript:
jQuery(document).ready(function(e) {
e( "body" ).on( "click", ".get_link", function(t) {
t.preventDefault();
var n = e(this);
var u = n.data("url");
var_win=window.open(u);
function checkwindow(){
if (!var_win.closed)
alert( "window still open");
else
alert ("window closed");
}
setTimeout(checkwindow, 10000);
return false
})
})
答案 0 :(得分:0)
不,你不能。如果我理解正确,您想要检测用户是否说例如转到Yahoo!或Facebook(与您自己分开的网站),如果他们决定关闭该窗口,然后做一些事情或从中获取一些信息。
也许如果链接转到您拥有的网站,您可以在这些特定网站上添加一些逻辑,以便在使用eventListener unload
(although even this isn't 100% reliable)关闭时发送请求,但如果它们是网站在你无法控制的情况下,你没有太多方法可以获得这些信息。如果您可以在自己的网站上检测到某人在其他网页上的互动,则会出现一些严重的安全问题。
一个hacky替代方案,如果说你在模态中显示这些网站是(我猜)你可以在用户将导航到的网站的模式中显示iFrame。这不是一个新标签,甚至不是他们浏览器中的新窗口 - 相反,这将是您在网站中创建的模式,因此您可以完全控制。这不仅仅是一个简单的window.open
,而且还需要更多的工作。