2012-05-16 91 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; 
}); 
相關問題