- ベストアンサー
同じページをブラウザで複数開けないように
同じページをブラウザで複数開けないようにすることは可能ですか。 例 123.html をすでに開いている。 さらに別のウインドウで 123.html を開いた場合に、何らかの処理で開けないようにする。 リンクをクリックではなく、別に開いたIEのお気に入りなどから開いた場合として。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3 の方のを元に、少し変えてみました。 if(window.self.name=='next')return; window.open(window.self.location.href,'next'); var w = window.open("","_top"); w.opener = window; w.close(); これで別窓の件は対応できるかと思います。 ただ、123.html を開いた後に別サイトに移っても その窓の名前は next (例示で付けた名前)なので、 その後に別のウインドで 123.html を開こうとすると 既に 123.html からは移っているのに その以前 123.html を開いていたウインドに 表示されます。 尚、当方の検証の不備かもしれませんが、 オペラ,モジラ 共に window.opener を認識せず、 常に else の方に行ってしまい、 何も表示しない状態になってしまいました。
その他の回答 (3)
- ryou0607
- ベストアンサー率27% (71/261)
body.onloadに if(window.opener){ return; }else{ window.open('123.html','next'); var w = window.open("","_top"); w.opener = window; w.close; } これでできますね。自分でもちょっとビックリしました。今度使ってみようw あ・・・・・ネットスケープとIEとオペラとか使えば、3つ以上開くこともできますね。そこまでの対策が必要であれば、サーバ側での対処が必要になるでしょうね。 あと、別ファイルからopen()で開いた場合も別窓として立ち上がってしまいます。←対処できたら教えてください^^;
- t-satoh
- ベストアンサー率35% (211/591)
該当のページを開いた時に、 クッキーにページの番号等何らかの情報を、 書き込んでおくのはどうでしょう? クッキーなら、設定した時間が経過すれば消えますから、 後始末をしなくても、一応大丈夫です。 とりあえず、一つ開いたら、一定時間経過しないと、 2つ目は絶対に開けなく出来るはずです。
無理やり作ろうと思えば作れます。 しかし、「閲覧者のパソコンが突然ハングアップした」ことを探知できないため、「誰もそのページを閲覧できないタイミング」が存在してしまいます。 閲覧者が「いつそのページを見始めたか」を探知するのは容易ですが、「いつ見終わったか」は、ブラウザが自己申告してくれるように細工をしないといけないからです。 よって、会員だけが見れる特殊なページ以外でそういう技術を使うと、まず間違いなく怪しまれて人が寄り付かなくなります。
補足
回答ありがとうございました。 >会員だけが見れる特殊なページ 実は、今回の質問は上記のような特殊なページです。