13

对于初学者......我没有让用户接受弹出窗口或类似内容的险恶意图。我只是想阻止用户调整他们已经导航到的网页的浏览器窗口的大小(这意味着我无权访问/不想使用 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/


问:这不会导致无限循环调整大小吗?- 用户1147171

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

于 2012-05-16T01:37:56.193 回答
2

我今天需要这样做(对于由 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;
});
于 2016-04-18T18:57:20.307 回答