- ベストアンサー
ウィンドウサイズを変更するには?
ウィンドウサイズを変更したいと思っています。別ウィンドウを開く時にサイズを指定するのではなく、現在のウィンドウについてです。 window.resizeTo(wSize, hSize); では外枠を含んだサイズになるようで、インナー(実際見ているサイズ)を指定してあげたいと思っています。IE、NS、MAC、WIN等書き分けないといけないように思いますが、どなたかサンプル等教えて頂けないでしょうか。 よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Windows+一部のブラウザのみでの確認なので自信なし。 function client_resizeTo(width, height) { if (document.layers) { // for NN4 window.resizeTo(width, height); window.resizeTo(width, height); } else { window.resizeTo(width*2, height*2); var client_width = document.body.clientWidth; var client_height = document.body.clientHeight; window.resizeTo(width*3-client_width, height*3-client_height); } } NN4 での resizeTo() は、引数をクライアント領域のサイズとしてウィンドウサイズを調整するようです。 しかし、リサイズによってウィンドウメニューの折り返しが行われると、高さが足りなくなってしまいます。 このため、幅調整用、高さ調整用の2回分の resizeTo() を実行しています。 IE および NN7 では、document.body.clientWidth (または .clientHeight)でクライアント領域のサイズを知ることができます。 これを使い、目的のサイズで resizeTo() を行った後のクライアント領域のサイズを測り、不足分を調整して再度 resizeTo() を実行します。 これだけなら window.resizeTo(width, height); var client_width = document.body.clientWidth; var client_height = document.body.clientHeight; window.resizeTo(width+width-client_width, height+height-client_height); でいいのですが、これでは1度目のリサイズで入ってしまったスクロールバーが消えた分の調整ができないため、1度目のリサイズでスクロールバーが出ない大き目のサイズにして調整を行っているのです。 ちなみに client_resizeTo() は、BODYタグの onLoad イベント時、またはそれ以降でないと利用できません。 また、ページマージンが0になるよう、BODYタグを調整しておく必要があります。 (つまり、BODYタグに topmargin=0 leftmargin=0 marginwidth=0 marginheight=0 を指定しておく。) ※スクリプトのインデントに全角空白を使っているので、コピペするときは半角空白かタブに置き換えてください。
お礼
ご回答ありがとうございます。 IEでは上手くいきましたが、NN6ではうまくいきません。clientWidthをサポートしていないようで。 すごくヒントになりましたので、大変嬉しく思っています。ちょっといじってみたいと思います。