【问题标题】:Check if window/tab opened by anchor has been closed检查锚点打开的窗口/选项卡是否已关闭
【发布时间】:2013-10-23 14:24:16
【问题描述】:

使用 JavaScript 打开窗口时,可以捕获对打开的窗口/选项卡的引用,然后可以使用该引用查看窗口/选项卡是否已再次关闭。像这样的东西(有点人为的例子):

var foo = window.open( 'http://www.foo.bar' );
...
if ( !foo || foo.closed ) {
    ...

但是是否有可能使用锚元素来实现类似的效果?例如,如果我有链接

<a href="http://www.foo.bar" target="_blank">Foo</a>

在我的网站上,是否有任何方法可以附加事件侦听器并获取对触发此锚元素时打开的任何窗口/选项卡的引用,然后在 JavaScript 中使用它?收听点击事件可能会起作用,但还有其他方法可以更好地覆盖它吗? (例如,你可以tab到一个锚元素并按回车也可以打开它,这不会注册为点击事件)

【问题讨论】:

  • 好问题;我不知道,但期待看到答案!
  • 如果两个窗口在同一个域中,您可以通过让子窗口在打开时将其窗口对象传递给父窗口来避免将任何代码放在锚标记上。

标签: javascript


【解决方案1】:

在关注锚标记时按下回车键将触发现代浏览器中的点击事件处理程序。我在 Chrome 30 中对此进行了测试。

证明:http://jsfiddle.net/HZvPT/

所以您的点击处理程序将获取href 属性,调用window.open(存储窗口的返回值),然后e.preventDefault() 以阻止锚标记执行其默认行为(这将打开一个第二个窗口,不好)。

【讨论】:

  • 但据我所知,这不适用于上下文菜单,您可以在其中选择在新选项卡中打开等。不幸的是,据我所知,似乎没有一个包罗万象的“激活”事件,或者浏览器在激活链接时应该调度的事件。
  • @macke true,我不确定是否有任何方法可以与这些右键菜单进行交互。
  • 是的,我怀疑目前是否有任何方法可以做 OP 所要求的诚实。很想知道有没有!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多