禁用浏览器窗口大小调整

Disable Browser Window Resize

本文关键字:调整 窗口大小 浏览器      更新时间:2023-09-26

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


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

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

我今天需要这样做(对于由 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;
});

可以使用 preventDefault 来完成

document.addEventListener("wheel", (event) =>
{
   if (event.ctrlKey)
      event.preventDefault();
});

它可以针对某些特定元素完成,但保留在其他任何地方:

document.getElementById("my_element").addEventListener("wheel", (event) =>
{
   if (event.ctrlKey)
      event.preventDefault();
});