禁用浏览器窗口调整大小

Posted

技术标签:

【中文标题】禁用浏览器窗口调整大小【英文标题】:Disable Browser Window Resize 【发布时间】:2012-05-23 13:33:13 【问题描述】:

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

我觉得我在以下方面走上了正轨:

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

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

谢谢

【问题讨论】:

我必须问为什么?浏览器窗口不应该被限制。如果最终用户想要将其移动到另一个屏幕并且无法调整其大小,这可能会给最终用户带来潜在问题。示例是具有不同分辨率的两个屏幕。 您应该永远尝试更改核心操作系统级别功能的行为(例如,防止调整窗口大小)。 曾经. @JohnHartsock - 也许他正在制作浏览器扩展或插件? 不幸的是,我受 NDA 的约束,但@Derek 是在正确的轨道上。我知道这违背了我们所有人所相信的一切,这就是为什么我不愿用这个问题来打扰社区。关于理由的简短回答是,本网站只能在特定(和其他受控)条件下访问。用户知道导航到它时会发生什么。谢谢大家。 @ChristianVarga rofl....你永远不应该假设这样的事情。在许多情况/情况下,人们可能需要按照这些方式做某事。也许这家伙是在受控环境(例如工作等)中创建网站,而不仅仅是一些随机的公共互联网网站。对于大多数网站?你也许是对的。对于每一种可能的情况?你错了。 【参考方案1】:

你可以先确定一个确定的尺寸。

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 函数第二次尝试执行时,窗口的尺寸将与它刚刚设置的完全相同,因此浏览器不会触发调整大小事件,因为尺寸没有改变。

【讨论】:

谢谢@Derek。这绝对符合我的想法。我已经插入了你的建议,但我仍然没有成功。但是,仅通过查看您所写的内容,我就可以看出这应该可行。这对我仍然有帮助,因为它确认我一定在其他地方做错了什么......这就是为什么我要将此标记为“已回答”。谢谢。 @tchnchn - 它应该可以工作,因为我在扩展程序的弹出窗口中使用它。 ;) 这是一个很烦人的“功能”。如果它有效(并且它不会,给定 OP),则用户将被锁定到窗口最初打开的任何大小,这可能有用,但可能不是。 谷歌浏览器是不是不允许你修改窗口大小了? @Purmou - 你为什么这么说?如果您使用window.open 打开一个窗口,那么您可以更改窗口的大小。【参考方案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;
);

【讨论】:

以上是关于禁用浏览器窗口调整大小的主要内容,如果未能解决你的问题,请参考以下文章

在窗口调整大小时禁用 jquery 函数

Xcode 11 - 在催化剂 Swift 中禁用调整大小模式

调整浏览器窗口大小时调整div的大小

垂直调整浏览器窗口大小时按比例调整图像大小?

在窗口调整大小时动态调整画布大小

如何禁用谷歌浏览器文本区域大小调整