- PR -

ブラウザ名を使って二重起動を抑止できないでしょうか

1
投稿者投稿内容
ガテン系
会議室デビュー日: 2003/07/04
投稿数: 9
投稿日時: 2003-10-01 20:33
いつもお世話になっています。
Webアプリを開発しているものです。

クライアント内におけるWebアプリの二重起動を抑止したいと
考えているのですが、JavaScript(又はブラウザの仕様?)で
わからないことがあります。

あるブラウザから
●=window.open(url,■,para);
で、名前■を指定した子ブラウザ●を表示できるかと思います。

この子ブラウザ●を表示したまま、新たに別のブラウザを起動した時
その別ブラウザから名前■を使って子ブラウザ●が既に表示されている
のかどうかを判定できないものでしょうか?

ご存知の方がいらっしゃいましたらご教授をお願いしたいと思います。
よろしくお願いします。
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-10-01 21:37
aoppです

if (●.closed) alert("閉じられてます"); else alert("開かれてます");

でいかがかな
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 00:54
引用:
if (●.closed) alert("閉じられてます"); else alert("開かれてます");

でいかがかな

別に起動しているブラウザからの判定のようですので、それは使えません。

別にブラウザを起動した場合JavaScriptでの判定は難しいかと思います。
ログオン、ログオフ操作によって制御されていれば、
サーバ側で判定することもできますが、ログオフ操作をせずに[X]ボタンで
閉じられることもあるため、サーバ側ではブラウザが閉じられたことまでを
判定することはできません。

二重起動することでどのような不都合なことが発生するかを明確にして
その問題を解決していくほうが近道のような気がします。
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-10-02 09:19
ブラウザ限定でよければ・・・
コード:
/**
 * ウインドウ検索
 * @param     name ウインドウ名
 * @return    ウインドウ(見つからない時はnull)
 */
function FindWin(name){
	var w=window.open('',name,'left=0,top=0,width=0,height=0');
	if(w.location.href=="about:blank"){
		w.close();
		return null;
	}else{
		return w;
	}
}


という風に開いてみて開けたらその名前がないと判断できます。

確かIE5.5以降だったかな?
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 09:43
なるほど!確かに動きますね。
URLに空文字列指定するのはやったこと無かったです。
既に開いている場合、ウィンドウの参照のみ取得するようになっているんですかね。
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-10-02 10:11
>既に開いている場合、ウィンドウの参照のみ取得するようになっているんですかね。
そのとおりです。

ただブラウザ依存が強かった気がします。

あと不具合としてhttpsの場合はドメインが違う(urlが空白のため)のセキュリティの警告が出ます。

元々は残ってたら閉じるためにしか使ってなかったのでブラウザによっては親子関係が崩れるかも知れません(このスクリプトを最後に使った側が呼び出したことになる)
ガテン系
会議室デビュー日: 2003/07/04
投稿数: 9
投稿日時: 2003-10-02 12:59
AOPPさん、NYRLさん、ぴでさん
ご返答ありがとうございます。

NYRLさんのやり方で試してみたところ
やりたいことがうまくできました。

「既存のブラウザ名称を指定してopenすると既存ブラウザの
参照を取得する」という機能を利用してるということですね?
起動ブラウザのURLに空文字列を指定することで、
既存のブラウザがない場合のlocation.hrefがabout:blank
となることを判定に使用できる。
…であってますでしょうか?

とりあえず、条件と問題も私の範囲に影響なさそうなので
大丈夫そうです。本当に助かりました。

[ メッセージ編集済み 編集者: ガテン系 編集日時 2003-10-02 13:00 ]
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-10-02 14:17
[QUATE]
「既存のブラウザ名称を指定してopenすると既存ブラウザの
参照を取得する」という機能を利用してるということですね?
起動ブラウザのURLに空文字列を指定することで、
既存のブラウザがない場合のlocation.hrefがabout:blank
となることを判定に使用できる。
…であってますでしょうか?
[/QUATE]
そのとおりです。
1

スキルアップ/キャリアアップ(JOB@IT)