2016-04-12 14 views
0

は、ユーザーが複数のブラウザのポップアップ・ウィンドウを持つユーザーのワークスペースを保存し、後でワークスペースを復元することができますサイズ。Javascriptを:保存し、ブラウザのウィンドウを復元するには、私のvaadinアプリケーションで

次のvaadinメソッドによって返されるブラウザのウィンドウサイズを保存します。

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

Vaadinは、アドレスバーとツールバーとして上部にタイトルバーや他のコントロールを含まない上記の方法において、ブラウザのコンテンツの幅と高さを返します。

ワークスペースを復元するとき、私はブラウザウィンドウのサイズを設定するには、JavaScriptのメソッドresizeTo()を使用しています。

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

resizeTo()は、ブラウザウィンドウではなく、コンテンツ領域の全体の幅と高さを設定します。これにより、ブラウザのウィンドウが意図したサイズより小さくなります。

誰でもこれを達成するためのより良い方法を知っていますか?

+0

'resizeTo'関数を投稿できますか? –

+0

@DavidBlaney組み込みのwindow.resizeTo()関数です。 http://www.w3schools.com/jsref/met_win_resizeto.asp –

答えて

1

あなたは私はあなたには、いくつかのbrowser compatibility issuesに実行するかもしれないと思うが、(resizeTo()を使用してこれを行うには「UI」寸法

// 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; 
} 

を決定するために、次のJavaScriptを使用し

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

を使用している方法)あなたはいくつかのことを考慮に入れる必要があります:

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); 
} 

別のオプションは、独自のJSブラウザサイズ計算を行うためにRPCで隠しコンポーネントを作成することです。

+0

ウィンドウのサイズを取得するために提案した方法を使用するのは難しいです。これはjavascriptになっています(私はvaadinバックエンドでサイズが必要です)。ちなみに、サイズはPage.getBrowserWindowHeight()によって与えられるものと同じです。あなたのdoResize()メソッドは、私が望んだことをしました。 –