moveToWIN()
ウインドウの位置を移動するメソッド
moveTo(x座標,y座標)にスクリーン右端からのx座標と上端からのy座標をピクセルで代入し、移動後フォーカスしています。
(s1はバグっていてうまく動作しません)
ウインドウ指定を省略するとselfウインドウが指定されます。ここではウインドウが閉じていてもエラーにならないようにウインドウ有無の確認関数
sbwin_closed()をセットで使っています。
移動後に動かしたウインドウへフォーカスしたい時は、//winobject.focus()のコメントアウト部分(//)を削除してください。
(サブウインドウを使う場合にはタブブラウザやポップアップを抑制するタイプのブラウザではwindow.openが有効である必要があります。)
*参考:
■ウインドウ有無の確認関数
サブウインドウや親ウインドウが開いていないときにそれらを操作しようとしたときに発生する
エラーを回避するために、その存在を確認するclosedが使われますが、この実装がブラウザによって
まちまちなため逆にエラーの原因となる場合が少なくありません。ここでは、それを回避するための
関数sbwin_closed()を使用しています。
この関数のサポートURL
親子ウインドウ有無の確認関数
*このファンクションをコピーして<script>と</script>の間にペーストしておくだけでこの機能をクロスブラウザに利用できるようになります。
Cross-Browser のための Sample Function
Syntax : moveToWIN(x座標,y座標[,winObject])
//e4,e5,e6,n4,n6,n7,m1,o6,o7,s1用
function moveToWin(x,y,winobject){
//ウインドウ有無チェック
if(!win_closed(winobject)){
//移動
winobject.moveTo(x,y)
//↓コメントアウトをはずせば移動後フォーカス
//winobject.focus()
}
}
//ウインドウ有無確認関数
//e4,e5,e6,n4,n6,n7,m1,o6,o7,s1用
function win_closed(winOj) {
var ua = navigator.userAgent
if( !!winOj )
if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
&& ua.indexOf('Win')!=-1 )
return winOj.closed
else return typeof winOj.document != 'object'
else return true
}
Example
<script type='text/javascript'>
<!--
var win1 = window.open('movetowsub1.htm','win1'
,"top=0,left=0,width=250,height=350,resizable");
//e4,e5,e6,n4,n6,n7,m1,o6,o7,s1用
function moveToWin(x,y,winobject){
//ウインドウ有無チェック
if(!win_closed(winobject)){
//移動
winobject.moveTo(x,y)
//↓コメントアウトをはずせば移動後フォーカス
//winobject.focus()
}
}
//ウインドウ有無確認関数
//e4,e5,e6,n4,n6,n7,m1,o6,o7,s1用
function win_closed(winOj) {
var ua = navigator.userAgent
if( !!winOj )
if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
&& ua.indexOf('Win')!=-1 )
return winOj.closed
else return typeof winOj.document != 'object'
else return true
}
//-->
</script>
ボタンクリックでサブウインドウが移動します。
<form>
<br>サブウインドウ
<br>
<input type="button" onclick="moveToWin(100,100,win1)" value="x=100,y=100">
<input type="button" onclick="moveToWin(0,300,win1)" value="x=0,y=300">
<input type="button" onclick="moveToWin(400,200,win1)" value="x=400,y=200">
<br>このウインドウ
<br>
<input type="button" onclick="moveToWin(200,200,self)" value="x=200,y=200">
<input type="button" onclick="moveToWin(150,200,self)" value="x=150,y=200">
<input type="button" onclick="moveToWin(300,300,self)" value="x=300,y=300">
</form>