• 締切済み

作成側:サブウィンドウの表示を1回きりにしたい。

サイトの管理・運営をしています。 今度新商品を出すので、サイトのTOPページを開いた時にアピールするために Javascript で商品の載った小さいサイズのサブウィンドウを出しています。 しかし、そのサブウィンドウを閉じてから、 サイト内を廻ってTOPに戻ってくると又開く。 もちろんそんなふうに作ったのですが、 サイトに来た時に1回だけ表示して、 サイト内にいる時は何度TOPページへ行っても開かないようにしたいのです。 そんな方法をご存知ではないでしょうか? 教えてください。

みんなの回答

noname#199778
noname#199778
回答No.3

実際にスクリプトを作ってみました。 一応、Windows Me上のIE6とNetscape7、Opera 6.05で動作確認してあります。 cookieを利用する例: <script type="text/javascript"><!-- gc1=document.cookie+"\;"; clen1=gc1.indexOf("sw"); gc2=gc1.substring(clen1-1); clen2=gc2.indexOf("="); clen3=gc2.indexOf("\;"); cdat=gc2.substring(clen2+1,clen3); function openWin(){ if (!cdat){ window.open("***.htm","_blank",""); setc="sw=1"; document.cookie=setc; } } //--></script> 一つ前のページのURI情報(referrer)を利用する例: <script type="text/javascript"><!-- prevuri=document.referrer; myuri="*******"; /* myuriには、自サイトのトップページのあるフォルダを記述してください。 「http://www.***.ne.jp/lead/index.htm」 がトップページのアドレスであれば、「www.***.ne.jp/lead」をmyuriに代入します。 */ function openWin(){ if (!prevuri.match(myuri)){ window.open("***.htm","_blank",""); } } //--></script> これらのスクリプトを記述して、後は<body onLoad="openWin()">で関数を呼び出せば、ほぼご希望通りの動作になると思います。 なお、前回のアドバイスで、来歴情報の取得の仕方を間違って紹介していました。 失礼しました。 参考になれば幸いです。

eim-yuuma
質問者

お礼

lead1976 さん 回答有難うございます(^-^) お礼が遅くなってしまい申し訳ありません。 cookieの扱い方はある程度勉強した事があるのですが、 実際に使用した事はありません。 この機会にぜひ挑戦してみようと思います。 コードも書いていただき有難うございました。ぜひ参考にさせて頂きます。 (もしかしたら、そのままコピペ使用してしまうかも(^_^;)) ありがとうございました。

noname#199778
noname#199778
回答No.2

 アイディアだけですが…  cookieを利用しても不都合がないのであれば、ポップアップウィンドウを開く処理に加えて、セッション毎のcookieに特定のパラメータを保存する仕掛けを入れておくようにすればいいのではないかと思います。  ポップアップウィンドウを開く処理の中では、cookieに保存されたパラメータがあるかどうかをチェックして、特定のパラメータがないときにのみ、ポップアップウィンドウを開き、cookieに特定のパラメータを保存する処理をさせるようにif条件分岐をすれば良いと思います。  こうすれば、特定のパラメータがcookieに保存してある限りは、ポップアップウィンドウは開かなくなります。  また、cookieについては、有効期限を設定しなければ、ブラウザを終了した時点でその情報を破棄する特性がありますから、後日改めてサイトを訪問するときにはまたポップアップウィンドウが開くでしょう。  具体的な記述などは、参考URLなどを参考にしてみて下さい。  なお、ブラウザでcookieを受け入れないようにしてある閲覧者の場合は、この仕掛けがうまく動かずに、そのページを開くたびにポップアップウィンドウが開く可能性もあります。  また、他に同ページ内でcookieを利用する仕掛けをしてある場合にはうまくないかもしれません。  他には、JavaScriptで来歴情報を取得して、直前の来歴情報が自サイトのURLでないときにだけポップアップを開かせるような仕掛けにしても良いかもしれません。 この場合、ブラウザの戻るボタンでトップに復帰した場合にはポップアップが出てしまうかもしれませんが、リンクをクリックしてトップに戻った場合はポップアップが出ないようにできます。  来歴情報については、「history.previous」で取得できると思います。  このあたりの対策ではいかがでしょうか? 見当違いでしたら、ごめんなさい。

参考URL:
http://tohoho.wakusei.ne.jp/wwwcook.htm
noname#236902
noname#236902
回答No.1

あくまで一つの方法ですが、TOPと全く同じページをもう一つ作っておいて(しかしそれにはサブウインドウが開くJavaScriptは入れておかない)、サイト内からのTOPへのリンクはそのページにする。というのはどうですか? 単純すぎますか?

eim-yuuma
質問者

お礼

Nishikino さん 回答ありがとうございます。 お礼が遅くなってしまい申し訳ありませんm(_ _)m 回答内容をみた時に「おぉ!こんな方法が!」と観点の違いに感嘆しました。 ・・しかし、サイト内のページが多く、全部のリンク先を変えるのは結構な手間とリンク切れ、 またブラウザのBackボタンでは使えないようですのでちょっと無理なようです(泣) けれど、教えてくださってありがとうございました。 覚えておいて、機会がありましたら使わせて頂きます。 ありがとうございました(^-^)