2011-09-17 320 views
22

我希望能夠使用JavaScript調整瀏覽器窗口的大小。我不想使用jQuery,代碼越小越好,但它必須適用於所有主流瀏覽器,包括Chrome。JavaScript中的跨瀏覽器調整瀏覽器窗口

任何解決方案?

感謝您的幫助!

P.S.這個問題被標記的標籤應該合併,但我不知道如何。

瀏覽器-----------相同 - >網頁瀏覽器

跨瀏覽器----相同 - >瀏覽器兼容性

+0

爲什麼你不想使用jQuery(或其他一些有用的框架)? – Eddie

+1

@Eddie這只是一個非常小的任務,我寧願不包括一個非常大的圖書館。 –

回答

20

window.resizeTo(width, height);

的您可能會遇到的問題是現代瀏覽器可能會阻止您在設置中無法調整窗口大小。這是沒有辦法的。 Chrome不會允許它。 Won't Fix Bug

IE是基於security zones

+0

這適用於Firefox 6,但不適用於Chrome 13或IE8。 –

+0

因爲現代瀏覽器會阻止它。 Chrome [無法修復](http://code.google.com/p/chromium/issues/detail?id=2091) – epascarello

+0

IE安全http://msdn.microsoft.com/zh-cn/library/ms536723 (v = vs.85).aspx – epascarello

6

沒有辦法的網頁來調整在Chrome瀏覽器主窗口。 JavaScript代碼只允許調整彈出窗口的大小。

10

事實上,Chrome,Firefox和較新的IE不允許調整由window.open()(至少Chrome)打開的選項卡式窗口和窗口的大小。

但是對於彈出窗口來說,大多數情況下都是可行的,除非瀏覽器中的安全設置阻止了該功能。但是使用window.resizeTo()很複雜。改爲使用window.resizeBy()

Chrome有一個bug很快得到一個彈出窗口的大小,所以你必須解決這個問題。

if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) 
    var t = setTimeout("resize()", 200); 
else 
    resize(); 

function resize() { 
    var innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 
    var innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 
    var targetWidth = 800; 
    var targetHeight = 600; 
    window.resizeBy(targetWidth-innerWidth, targetHeight-innerHeight); 
}