2012-04-30 8 views
18

ウィンドウのサイズを変更するのは悪い考えです。なぜなら、それは嫌なことですし、チョークボードして、離れて行ってください。私は講義ではなく解決策を探しています。これは、イントラネット設定でのみ使用されます。具体的には、ウェブミーティングを通じたレビューのために、応答して設計されたウェブサイト(メディアクエリーを使用するサイト)をクライアントにデバッグし、デモする。私は特定のブレークポイントをデモしたい。これは一般の人には解けるものではありません。内側の幅が特定の値になるようにブラウザウィンドウのサイズを変更するには

物事は私がすでに知っている:

  1. あなただけのサイズを変更することができ、位置ウィンドウがないユーザーが、JavaScriptで開かれました。 (オプションではないセキュリティ設定を調整しない限り)
  2. ウィンドウのresizeTo()メソッドを使用すると、ブラウザのサイズが指定されたサイズに変更されます。ビューポートはしばしばかなり小さくなります(平均30〜100ピクセル小さくなります)。しかし、ビューポートのサイズを特定のサイズに変更したいと思います。
  3. ブラウザ、ブラウザのバージョン、プラットフォーム、いくつかのプラグイン、およびさまざまなメニューとツールバーが、ビューポートのサイズを変更します。より多くのメニューとツールバーは、ビューポートの幅が小さいことを意味します。

考えられる解決策:

  1. は、ブラウザの幅と高さを探す
  2. は、ビューポートの幅と高さ
  3. 両者の違いを決定して下さい。
  4. resizeTo(と私の呼び出しで値を調整します)に応じて

私は私が把握することができ、他のステップ1.すべての助けが必要です。私はjQueryと近代化ツールを使用しています。

ご協力いただきありがとうございます。

+1

http://www.quirksmode.org/dom/w3c_cssom.html – AlienWebguy

+0

さて、そこに行きます。 – mrbinky3000

+0

手順4で問題が発生するのは、ブラウザが新しいウィンドウにポップアップを開くための設定を有効にしていることと、サイズを変更できることだけです。 – epascarello

答えて

17

ポストはかなり古いですが、ここでは、将来の読者のための具体的な実装です:

var resizeViewPort = function(width, height) { 
    if (window.outerWidth) { 
     window.resizeTo(
      width + (window.outerWidth - window.innerWidth), 
      height + (window.outerHeight - window.innerHeight) 
     ); 
    } else { 
     window.resizeTo(500, 500); 
     window.resizeTo(
      width + (500 - document.body.offsetWidth), 
      height + (500 - document.body.offsetHeight) 
     ); 
    } 
}; 

そして、あなたのアカウントにスクロールバーを利用したい場合:

var resizeViewPort = function(width, height) { 
    var tmp = document.documentElement.style.overflow; 
    document.documentElement.style.overflow = "scroll"; 

    if (window.outerWidth) { 
     window.resizeTo(
      width + (window.outerWidth - document.documentElement.clientWidth), 
      height + (window.outerHeight - document.documentElement.clientHeight) 
     ); 
    } else { 
     window.resizeTo(500, 500); 
     window.resizeTo(
      width + (500 - document.documentElement.clientWidth), 
      height + (500 - document.documentElement.clientHeight) 
     ); 
    } 

    document.documentElement.style.overflow = tmp; 
}; 

は楽しみを持っています...

+2

これはIE 11、FF、およびChrome(すべてWindows上)で動作します。 – mlhDev

+2

優れたソリューションですが、window.resizeイベントで使用しました。その場合、Safariの少なくとも2つのデスクトップバージョンでは、最初のバージョンはうまくいきません。ウィンドウは、サイズ変更やサイズ変更を何度か繰り返して、適切なサイズになるか、サイズ変更ループに詰まってしまいます。私にとっては、DOMがロードされたときに 'window.outerWidth - window.innerWidth'を1回計算し、各リサイズでそれらを計算するのではなく、毎回それらの値を使用しています。私は高さのために同じことをしました。 – toon81

関連する問題