13

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

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

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

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

ありがとう

4

2 に答える 2

27

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

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ドキュメント ビューのサイズが変更された場合にのみイベントを送出する必要があると規定されています。関数がresizeTo2 回目の実行を試みると、ウィンドウは設定されたのとまったく同じサイズになり、サイズが変更されていないため、ブラウザーはサイズ変更イベントを発生させません。

于 2012-05-16T01:37:56.193 に答える
2

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

@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;
});
于 2016-04-18T18:57:20.307 に答える