禁用浏览器窗口调整大小

时间:2012-05-16 01:31:52

标签: javascript jquery browser window-resize

对于初学者......我没有任何恶意的意图让用户接受弹出窗口或类似的东西。我只是想阻止用户调整他们已经导航过的网页的浏览器窗口(意味着我无权访问/不想使用window.open();)。我已经研究了很长一段时间了,似乎找不到一个简单的答案。

我觉得自己正在走上正轨:

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

......无济于事。我不得不想象这是可能的。是吗?如果是这样,我一定会感谢你的帮助。

由于

2 个答案:

答案 0 :(得分:23)

您可以先确定一定的尺寸。

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

然后这样做:

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

演示:http://jsfiddle.net/DerekL/xeway917/


问:这不会导致无限循环的大小调整吗? - user1147171

好问题。这不会导致无限循环的大小调整。 W3C specification表示只有在调整文档视图大小时才必须调度resize事件。当resizeTo函数尝试第二次执行时,窗口将具有与刚刚设置的完全相同的维度,因此浏览器不会触发resize事件,因为维度尚未更改。

答案 1 :(得分:0)

我今天需要这样做(对于由Chrome扩展程序打开的面板)但我需要允许用户更改窗口高度,但是阻止他们更改窗口宽度

@ Derek的解决方案让我几乎到了那里,但我不得不调整它以允许高度变化,因此,无限的调整大小循环是可能的,所以我也需要防止它。这是我对Dereck的答案的版本,对我来说效果很好:

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;
});