禁用浏览器窗口resize

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

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

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

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

谢谢

您可以先确定一个确定的大小。

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

然后这样做:

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

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


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

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

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

@ Derek的解决方案让我几乎在那里,但我不得不调整它以允许高度变化,因此,可以进行无限的resize循环,所以我也需要防止它。 这是我对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; });