メインのページには、「小ウインドウ」を開くために、以下のjavascriptを挿入しています。
<script type='text/javascript'>
<!--
self.name="MainWindow";
window.open('http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes');
// -->
</script>
さて、「小ウインドウ」はブラウザーが、ある特定のCookieを持っていれば、開く。持っていなければ「小ウインドウ」を開かない(または、開いてもすぐ閉じてしまう)という条件分岐をさせたく思っています。
これをjavascriptでは、どのように書けばよいのでしょうか?
【確認1】aaa= の部分を OXOX= に書き換えてますか?
【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?
クッキーはパソコン内に保存されますが、サイト毎にアクセス制限がかかってますので、
テスト用ページをパソコン内に置いたままでテストしても目的ページが保存したクッキーは利用できません
従いまして、テスト用ページも目的ページと同じサイト(サーバー)に置いてからテストしなければなりません
【確認3】本当にクッキーは格納されていますか?
回答2の中に記した下記部分はクッキーの中身をそのままブラウザ上に表示させて確認するためのものです
ブラウザ上にOXOX=を含む文字列が出力されていないとすれば、クッキーが保存されていないか、もしくは、
テスト用ページをサイトにアップロードせず、パソコン上で動かしたかというような事が原因と考えられます
<script type="text/javascript"> <!-- document.write(document.cookie); //--> </script>
こうすればいいのではないでしょうか(クッキー読み取り部分は結構適当です)
開くopen命令の前で分岐させます。
メインページ
<script type='text/javascript'> <!-- self.name="MainWindow"; cookiedata = document.cookie.split("keyname=");//keynameはクッキー名 //分岐文 if(cookiedata.match(/^name/)){//nameは特定のCookie数値 window.open(' http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes'); } // --> </script>
子ウィンドウ…特になにも書かない
さっそくのご回答、ありがとうございます。質問が言葉足らずだったようです。特定のクッキーは、クッキー名は同一ですが、そのクッキーが保有している個別の情報はユーザーによって違います(会員制のサイトですので、ログイン認証に該当のクッキーを使っているためです)。
そこで、ご回答いただいたものを、特定のクッキーがあれば開く(なければ開かない)と変更する場合は、どのような書けばよいのかご教示いただけますか?
<html> <head> <title>ウィンドウオープンのテスト</title> <script type="text/javascript"> <!-- // 手抜き例 aaaa= baaa= aaa=など全てにマッチしてしまうので注意が必要 if ( document.cookie.match(/aaa=/) ) { window.open('http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes'); } // 着実な例1 aaa にのみマッチ var cookiedata = document.cookie.split("; "); for(var i = 0 ; i < cookiedata.length ; i++) { if ( cookiedata[i].match(/^aaa=/) ) { window.open('http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes'); break; } } // 着実な例2 aaa にのみマッチ var cookiedata = document.cookie.split("; "); for(var i = 0 ; i < cookiedata.length ; i++) { var d = cookiedata[i].split("="); if ( d[0] == "aaa" ) { window.open('http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes'); break; } } //--> </script> </head> <body> <h1>クッキーの中身</h1> <script type="text/javascript"> <!-- document.write(document.cookie); //--> </script> </body> </html>
ご回答に感謝しています。
ただ、どの回答も実際にやってみると、目的を果たすことはできませんでした。
多分私の質問の仕方が悪いのかもしれません。いただいた回答の中に「クッキー名」という部分がありましたが、目的のページでは、すでにクッキーがブラウザーに入っていることが前提となっています。そして、クッキーは
setcookie("OXOX",$userID,ime()+3600*24*90,"/");という命令文で、ブラウザーに送られているようです。
("OXOX",$userID,ime()+3600*24*90,"/")の内、OXOXだけが共通で、他は固有の別々のものです。
今回は、このOXOXを手かがりに、条件分岐で、ページを開いたり、開かなかったりさせたいのですが・・・。
引き続き、ご教示をどうぞよろしくお願いいたします。
>特定のクッキーがあれば開く(なければ開かない)
その場合は分岐文を変更すればよいと思います。
<script type='text/javascript'> <!-- self.name="MainWindow"; //keynameはクッキー名 //分岐文(keynameが存在していて、かつ値が入っている場合) if(document.cookie.match(/keyname=[^;]/)){ window.open(' http://www.oxox.info/little.html', '_blank', 'width=150,height=600,scrollbars=yes,resizable=yes,status=yes'); } // --> </script>
ご回答に感謝しています。
ただ、どの回答も実際にやってみると、目的を果たすことはできませんでした。
多分私の質問の仕方が悪いのかもしれません。いただいた回答の中に「クッキー名」という部分がありましたが、目的のページでは、すでにクッキーがブラウザーに入っていることが前提となっています。そして、クッキーは
setcookie("OXOX", $userID,time()+3600*24*90, "/");という命令文で、ブラウザーに送られているようです。
("OXOX", $userID,time()+3600*24*90, "/")の内、OXOXだけが共通で、他は固有の別々のものです。
今回は、このOXOXを手かがりに、条件分岐で、ページを開いたり、開かなかったりさせたいのですが・・・。
引き続き、ご教示をどうぞよろしくお願いいたします。
【確認1】aaa= の部分を OXOX= に書き換えてますか?
【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?
クッキーはパソコン内に保存されますが、サイト毎にアクセス制限がかかってますので、
テスト用ページをパソコン内に置いたままでテストしても目的ページが保存したクッキーは利用できません
従いまして、テスト用ページも目的ページと同じサイト(サーバー)に置いてからテストしなければなりません
【確認3】本当にクッキーは格納されていますか?
回答2の中に記した下記部分はクッキーの中身をそのままブラウザ上に表示させて確認するためのものです
ブラウザ上にOXOX=を含む文字列が出力されていないとすれば、クッキーが保存されていないか、もしくは、
テスト用ページをサイトにアップロードせず、パソコン上で動かしたかというような事が原因と考えられます
<script type="text/javascript"> <!-- document.write(document.cookie); //--> </script>
ご回答、ありがとうございます!
どうもご教示いただきました、<【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?>が原因のようです。
ただ、これは理由があって、別々のサーバーにしか置けないものなのです。困りました・・・。
>> 特定のクッキーは、クッキー名は同一ですが、そのクッキーが保有している個別の情報はユーザーによって違います
とのことですので、"OXOX"がクッキー名ということになります。
他の方の回答のクッキー名の部分を OXOX に置き換えれば希望の動作になると思います。
あと、コメント欄をオープンしていただけると気軽に書き込めるので助かります。
ご回答、ありがとうございます!
どうもご教示いただきました、<【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?>が原因のようです。
ただ、これは理由があって、別々のサーバーにしか置けないものなのです。困りました・・・。