我有一个弹出窗口,在该页面中,我在正文中有以下代码。
<a href="http://www.example.com" target="_blank" onClick="javascript:window.close()"><img src="...something"/></a>
目的是在用户点击图片链接时关闭此弹出窗口,并打开新页面并定向到 http://www.example.com 。
适用于IE和Chrome,但不适用于Firefox。弹出窗口关闭但没有打开新窗口。
有什么想法吗?
答案 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,从而允许打开新窗口。