Html javascript打开新窗口并关闭当前窗口

时间:2010-09-09 22:59:32

标签: javascript window.open

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

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

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:14)

是的,我可以重复这个 - 有趣。 setTimeout解决这个问题:

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

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

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

答案 1 :(得分: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');
}

答案 2 :(得分:2)

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

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

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