禁用浏览器窗口调整大小
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;
);
【讨论】:
以上是关于禁用浏览器窗口调整大小的主要内容,如果未能解决你的问题,请参考以下文章