1

我有这个通用的javascript函数来打开一个窗口:

function OpenWindow(url,windowname,wide,high)
{
    spop=window.open(url,windowname,"width="+wide+",height="+high+",scrollbars=1,resizable=1,statusbar=1,menubar=0");
    spop.moveTo(Math.round((screen.availWidth-wide)/2),Math.round((screen.availHeight-high)/2));
    spop.focus();
}

打开后,我把它移到屏幕中间。问题是 Chrome 当前正在隐藏打开的窗口(它在 Explorer 和 Firefox 中运行良好)。它打开它,移动它,但随后窗口保持最小化且无法访问。

有趣的是,如果我双击调用该函数的链接,那么窗口就会出现在它应该出现的位置,只是它的大小和高度不正确(它非常小,我必须调整它的大小)。更有趣的是,它曾经在 Chrome 中工作,但几个月前就停止工作了。

显然问题不在于 focus() 调用(我发现有人对此有问题)。如果我删除 moveTo(),窗口会出现(但不居中)。

有任何想法吗?谢谢!

4

1 回答 1

1

事实证明,这是当前 Chrome 版本中的一个已知错误:

http://code.google.com/p/chromium/issues/detail?id=115585

似乎解决方法是在调用 open 后延迟对 resizeTo 或 moveTo 的任何调用,例如:

setTimeout(function(){
    spop.moveTo(
        Math.round((screen.availWidth - wide) / 2),
        Math.round((screen.availHeight - high) / 2)
    );
    spop.focus();
},100);

不是最优雅的解决方案,但在修复错误之前应该足够了。

于 2012-04-17T10:54:18.030 回答