javascript 禁用浏览器窗口大小调整

sd2nnvve  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(240)

首先.... a.我并没有恶意让用户看到弹出窗口或类似的东西。我只是想阻止用户调整他们已经浏览过的网页的浏览器窗口大小(这意味着我无法访问/不想使用window.open();)。我已经研究了很长一段时间,似乎找不到一个直接的答案。
我觉得我是在轨道上的东西沿着线:

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

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

q35jwt9p

q35jwt9p1#

你可以先确定一个确切的大小。

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事件,因为尺寸没有改变。

svmlkihl

svmlkihl2#

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

kpbwa7wx3#

如果需要一些特定的元素来处理一些特定模式下的大小调整,并防止整个窗口的大小调整使用preventDefault

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

相关问题