0

別のページから window.open を使用してポップアップとして開くページがあります。この時点で、window.open呼び出しはポップアップ ページの特定の高さと幅を指定します。

window.innerHeightポップアップ ページで、 andを使用して利用可能な画面サイズを検出しますwindow.innerWidth(クロスブラウザーの互換性についても同様です)。

window.onload = function() { 
   if (window.innerWidth && window.innerHeight) { 
      ww = window.innerWidth; wh = window.innerHeight; 
   } ` 

ポップアップがこれを使用して openend である場合、これは時々機能しません:

newHeight = 400; 
newWidth = 400; 
window.open("popup.html", "", "height=" + newHeight + ",width=" + newWidth);

私が抱えている問題は、高さ/幅の検出でタイミングの問題が発生することがあることです。状況によっては、返される高さ/幅がポップアップ ウィンドウに設定されているものではなく、他の値になることがあります (オープナー ウィンドウの値のように見えます)。

window.innerHeightポップアップ ウィンドウの高さ/幅の設定が適用される前に が検出されたようです。

通常、ポップアップでは、window.onload関数内の高さと幅を検出します。30 ミリ秒のタイムアウト遅延を追加すると問題が消えるため、これはタイミングの問題である可能性があると思いますが、それよりも短い遅延でも問題が発生する可能性があります。

質問: 開いたウィンドウに、オープナーの高さ/幅の設定window.openが適用されていることを確認するイベントはありますか?

4

1 に答える 1

1

loadすべてを真にロードする前にイベントが発生することがあります (font-face 宣言など)。試してみてください...

document.onreadystatechange = function() {
  if (document.readystate === 'complete') {
     var ww = window.innerWidth; 
     var wh = window.innerHeight;
  }
}
于 2012-10-08T09:09:39.480 に答える