- ベストアンサー
サブウィンドの制限をするには?
自分のサイトで TOPページにアクセスすると自動で開く サブウィンドがあります。 同日中(0時~23:59まで)に同じ人が再度TOPページを開いた際に 2回目以降は自動で開かないようにすることはできますか? TOPページにサブウィンドへのリンクを貼って2回目以降開きたい人だけ そのリンクからは開けるようにしたいのですが・・・。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
cookieを利用して条件分岐を入れれば良いと思います。 あまりきれいなスクリプトではないかもしれませんが、以下に実例を書きます。 function subwinOpen(){ ochk=document.cookie+"\;"; x1=ochk.indexOf("opnd"); ochk=ochk.substring(x1-1); x2=ochk.indexOf("="); x3=ochk.indexOf("\;"); xx=ochk.substring(x2+1,x3); n=eval(xx); /* 以上、cookieを取得 */ if (n!=1){ //cookieに所定の値がない場合の処理 window.open("***.htm","subwin"); //サブウィンドウを開く now = new Date(); dd = now.getDate()+1; now.setDate(dd); now.setHours(0); now.setMinutes(0); now.setSeconds(0); now.toGMTString(); /* 以上の部分でcookieの有効期限に渡す値を設定。 この処理をしている時間に対して、翌日の午前0時ちょうどをセット */ document.cookie="opnd=1; expires="+now; /* cookieにサブウィンドウを開いたことを示すフラグと有効期限を保存 */ } } 自動でサブウィンドウを開く関数を以上のような感じにすると、 ・cookieが保存されている時は、同日中のその時点よりも前にサブウィンドウが開いているものとして何もせずに処理を終了し、 ・cookieがない場合は、サブウィンドウを開いて、サブウィンドウを開いたことを示すフラグをcookieに保存します。 同時に、このとき保存するcookieの有効期限を翌日午前0時にセットしています。 cookieは有効期限がセットされていれば、その有効期限を過ぎた時点で破棄されますので、このケースでは午前0時を迎えるごとにこのページで保存しているcookieは消えます。 ですので、一度自動的にサブウィンドウが開いた場合、その翌日までは同じサブウィンドウは自動では開かなくなるはずです。 おそらくこれでうまくいくと思うのですが… 見当違いでしたら、ごめんなさい。
その他の回答 (1)
- urusyun
- ベストアンサー率52% (10/19)
#1の人もあげておられますが、クライアントのJavaScriptだけでは実現できないと思います。 というのは、そのページを見た人のマシンからは、前いつ見たのかという情報を特別もっているわけではないですし、あなたのページのソースを置いてあるページではいつ誰が最後にアクセスしたか、という情報を特別管理しているわけではないからです(HTMLである限りは、の話です)。 なので、クライアント側で行う場合は、#1の人のようにcookieを使用する方法になると思いますが、最近はセキュリティの問題からcookieをoffにしている人も多くなってきているので…(私も普段はcookieをoffにしています ^^;) あとは、ワンパターンですが、あきらめてASPとか、CGIを利用する、ということになるでしょうか? ASPや、CGIでどのように実現するか、ということはすれ違いになるので詳しく説明しませんが、思ったより簡単にできます。 ただ、あなたの利用しているサーバーでASPやCGIの利用を許可しているか、という問題が残りますが。 あまり役に立たない情報ですが、参考までに。
お礼
ありがとうございます。 cookieの問題は承知の上でした(^-^)
お礼
ありがとうございます! 助かりました♪