9

我有一个弹出窗口,在该页面中,正文中有以下代码。

<a href="http://www.example.com" target="_blank" onClick="javascript:window.close()"><img src="...something"/></a>

目的是在用户单击图像链接时关闭此弹出窗口,并打开一个新页面并被定向到http://www.example.com

它适用于 IE 和 Chrome,但不适用于 Firefox。弹出窗口关闭,但没有打开新窗口。

有任何想法吗?

4

3 回答 3

14

是的,我可以重现这个 - 有趣。setTimeout解决它:

onClick="javascript: setTimeout(window.close, 10);"

我只能猜测,一旦窗口关闭(发生在超链接之前),Firefox 就会停止处理该页面。

编辑:最好让它延迟 10 毫秒 - 1 毫秒 Chrome 不会关闭窗口。

于 2010-09-09T23:07:57.947 回答
3

这个问题实际上已经为开瓶器解决了,但它对我的问题没有帮助(不希望:firefox 下的新窗口与当前弹出窗口保持相同的大小)。

所以我找到以下解决方案:

function whenClicked() 
{
    window.close();
    opener.location.href = "http://www.example.com";

}

或者如果 ppage 应该在新选项卡中打开:

function whenClicked() 
{
    window.close();
    opener.open(http://www.example.com, '_blank');
}
于 2013-02-25T15:53:50.137 回答
2

当您通过 javascript 向元素的点击事件添加一些功能时,该功能会在默认点击事件(在这种情况下,打开一个新页面)之前执行,以便允许拦截和覆盖默认事件。仅当事件返回布尔值 true 时才会执行默认行为。

在这种情况下,附加功能将是关闭窗口,我猜 Firefox 选择将其解释为“我们都在这里完成”,所以点击事件永远不会返回 true,因此新页面永远不会打开。

Evgeny 建议使用短超时将允许 click 事件在窗口关闭之前返回 true,从而允许打开新窗口。

于 2010-09-09T23:22:04.137 回答