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 に答える