2012-05-16 103 views
7

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

我觉得我是在轨道沿着线的东西:

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

...无济于事。我必须想象这是可能的。是吗?如果是这样,我一定会很感激这个帮助。

谢谢

+5

我必须问为什么?浏览器窗口不会受到限制。如果最终用户想将其移动到另一个屏幕并且无法调整大小,这可能会给最终用户带来潜在的问题。示例是具有不同分辨率的两个屏幕。 –

+4

您应该永远不要试图改变核心操作系统级别功能的行为(例如,防止调整窗口大小)。 *自从*。 –

+1

@JohnHartsock - 也许他正在做一个浏览器扩展或插件? –

回答

18

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

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

+0

谢谢@Derek。这绝对符合我的想法。我插入了你的建议,但我仍然没有成功。但是,通过查看你写的内容,我可以看出这应该起作用。这对我仍然很有帮助,因为它证实我必须在其他地方做错事情......这就是为什么我要把它标记为“已回答”。谢谢。 –

+0

@tchnchn - 它应该有效,因为我在扩展的弹出窗口中使用它。 ;) –

+1

这是一个非常烦人的“功能”。如果它有效(并且它不会,给定OP),用户被锁定到窗口最初打开的任何大小,这可能是有用的,但可能不是。 – RobG

0

我需要做今日(由一个Chrome扩展开了一个面板),但我需要允许用户改变窗口的高度,但阻止他们改变窗口宽度

@德里克的解决方案让我几乎那里,但我不得不调整它允许高度变化,因此,无尽的调整循环是可能的,所以我需要防止这种情况。这是我对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; 
});