2016-04-12 16 views
0

Vaadin uygulamasında kullanıcı, birden çok tarayıcı açılır penceresiyle bir kullanıcı çalışma alanı kaydedebilir ve çalışma alanını daha sonra geri yükleyebilir.Javascript: tarayıcı pencere boyutlarını saklayın ve geri yükleyin

Vaadin yöntemlerini izleyerek döndürülen tarayıcı penceresi boyutunu kaydediyorum.

Page.getBrowserWindowHeight(); 
Page.getBrowserWindowWidth(); 

Vaadin adres çubuğu ve araç çubuğu olarak yukarıdaki yöntemlerde tarayıcı, üst başlık çubuğu ve başka kontrolleri hariç olmak üzere içeriği genişliğini ve yüksekliğini döndürür.

Bir çalışma alanını geri yüklerken, tarayıcı pencerelerinin boyutunu ayarlamak için resizeTo() javascript yöntemini kullanıyorum.

JavaScript.getCurrent().execute("resizeTo(" + windowWidth + "," + windowHeight + ")"); 

resizeTo() tarayıcı penceresine değil, içerik alanı toplam genişlik ve yüksekliğini ayarlar. Bu nedenle, tarayıcı penceresi istenilen boyuttan daha küçük hale gelir.

Bunu başarmak için daha iyi bir yöntem bilen var mı? Eğer

Page.getBrowserWindowHeight(); 
Page.getBrowserWindowWidth(); 

kullanıyor

+0

'resizeTo' işlevinizi gönderir misiniz? –

+0

@DavidBlaney, window.resizeTo() işlevinde yerleşik olarak bulunur. http://www.w3schools.com/jsref/met_win_resizeto.asp –

cevap

1

yöntemleri 'UI' boyutlarını belirlemek için aşağıdaki JavaScript kullanmak

// Window height and width 
var cw = 0; 
var ch = 0; 
if (typeof(window.innerWidth) == 'number') { 
    // Modern browsers 
    cw = window.innerWidth; 
    ch = window.innerHeight; 
} else { 
    // IE 8 
    cw = document.documentElement.clientWidth; 
    ch = document.documentElement.clientHeight; 
} 

yapmak için bu kullanarak resizeTo() (Biraz browser compatibility issues için çalışabilir düşünüyorum rağmen) Diğer birkaç şeyi dikkate almanız gerekir:

function doResize(width, height){ 
    // Window height and width 
    var cw = 0; 
    var ch = 0; 
    if(typeof(window.innerWidth) == 'number') { 
     // Modern browsers 
     cw = width + (window.outerWidth - window.innerWidth); 
     ch = height + (window.outerHeight - window.innerHeight); 
    } else { 
     // IE 8 
     cw = width + (document.documentElement.offsetWidth-document.body.offsetWidth); 
     ch = height + (document.documentElement.offsetHeight-document.body.offsetHeight); 
    } 
    window.resizeTo(cw, ch); 
} 

Başka bir seçenek, kendi JS tarayıcı boyutu hesaplarınızı yapmak için RPC ile gizli bir bileşen oluşturmak olacaktır.

+0

Pencerenin boyutunu javascript içinde olduğundan (vaadin arka tarafındaki boyuta ihtiyacım var) almayı önerdiğin şekilde kullanmak zor. Bu arada, boyutlar, Page.getBrowserWindowHeight() tarafından verilenle aynıdır. DoResize() yönteminiz istediğimi yaptı. –

İlgili konular