我有一个弹出窗口,在该页面中,我的身体中有以下代码。

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

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

它在IE和Chrome中起作用,但在Firefox中不起作用。弹出窗口关闭,但没有打开新窗口。

有任何想法吗?

有帮助吗?

解决方案

是的,我可以再说这 - 有趣。 setTimeout 围绕它工作:

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

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

编辑:最好使其延迟10ms-使用1MS Chrome不会关闭窗口。

其他提示

该问题实际上是为开瓶器解决的,但没有帮助我的问题(不希望我的问题:Firefox下的新窗户保持与当前弹出窗口相同的大小)。

因此,我发现以下解决方案:

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

}

否则,如果PPAGE应在新标签中打开:

function whenClicked() 
{
    window.close();
    opener.open(http://www.example.com, '_blank');
}

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

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

Evgeny使用短时间的建议将允许点击事件在关闭窗口之前返回TRUE,从而使新窗口打开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top