web-dev-qa-db-ja.com

ブラウザウィンドウのサイズ変更を無効にする

まず第一に...私はユーザーをポップアップやそのようなものにさらすつらい意図はありません。ユーザーが既に移動したWebページのブラウザーウィンドウのサイズをユーザーが変更できないようにしたいだけです(つまり、window.open();にアクセスしたくない、または使用したくない)。私はこれについてかなり長い間研究してきましたが、簡単な答えを見つけることができないようです。

私は次のように何かに順調に進んでいるように感じました:

 $(window).resize(function() {
     var wWidth = window.width,
     wHeight = window.height;
     window.resizeBy(wWidth, wHeight);
 });

...無駄に。これが可能だと想像しなければならない。それは...ですか?もしそうなら、私は間違いなく助けに感謝します。

ありがとう

12
Matt Bontrager

最初に明確なサイズを決定できます。

var size = [window.width,window.height];  //public variable

次にこれを行います:

$(window).resize(function(){
    window.resizeTo(size[0],size[1]);
});

デモ: http://jsfiddle.net/DerekL/xeway917/


Q:これはサイズ変更の無限ループを引き起こしませんか? -user1147171

いい質問ですこれにより、サイズ変更の無限ループが発生することはありません。 W3C仕様 は、ドキュメントビューのサイズが変更された場合にのみresizeイベントを送出する必要があることを示しています。 resizeTo関数が2回目の実行を試みると、ウィンドウは設定されたとおりの正確な寸法を持ち、寸法が変更されていないため、ブラウザーはサイズ変更イベントを発生させません。

24

今日はこれを行う必要がありました(chrome拡張機能によって開かれたパネルの場合)が、ユーザーがウィンドウの高さを変更できるようにする必要がありますが、ウィンドウの幅が変更されないようにする必要があります

@Derekの解決策はほぼ実現しましたが、高さを変更できるように微調整する必要があり、そのため、無限のサイズ変更ループが可能だったので、それも防ぐ必要がありました。これは私にとって非常にうまく機能している私のバージョンのデレックの答えです:

var couponWindow = {
  width: $(window).width(),
  height: $(window).height(),
  resizing: false
};
var $w=$(window);
$w.resize(function() {
  if ($w.width() != couponWindow.width && !couponWindow.resizing) {
    couponWindow.resizing = true;
    window.resizeTo(couponWindow.width, $w.height());
  }
  couponWindow.resizing = false;
});
2
Wesley Smith