人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

メインのページとメインのページを開くと、連動して開く「小ウインドウ」の2つを準備しています。

メインのページには、「小ウインドウ」を開くために、以下の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では、どのように書けばよいのでしょうか?

●質問者: ozaki
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:cookie JavaScript name open yes
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● 牛乳先生(tukihatu)
●19ポイント

こうすればいいのではないでしょうか(クッキー読み取り部分は結構適当です)

開く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>

子ウィンドウ…特になにも書かない

◎質問者からの返答

さっそくのご回答、ありがとうございます。質問が言葉足らずだったようです。特定のクッキーは、クッキー名は同一ですが、そのクッキーが保有している個別の情報はユーザーによって違います(会員制のサイトですので、ログイン認証に該当のクッキーを使っているためです)。

そこで、ご回答いただいたものを、特定のクッキーがあれば開く(なければ開かない)と変更する場合は、どのような書けばよいのかご教示いただけますか?


2 ● うぃんど
●19ポイント
<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を手かがりに、条件分岐で、ページを開いたり、開かなかったりさせたいのですが・・・。

引き続き、ご教示をどうぞよろしくお願いいたします。


3 ● 牛乳先生(tukihatu)
●18ポイント

>特定のクッキーがあれば開く(なければ開かない)

その場合は分岐文を変更すればよいと思います。

<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を手かがりに、条件分岐で、ページを開いたり、開かなかったりさせたいのですが・・・。

引き続き、ご教示をどうぞよろしくお願いいたします。


4 ● うぃんど
●18ポイント ベストアンサー

【確認1】aaa= の部分を OXOX= に書き換えてますか?

【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?

クッキーはパソコン内に保存されますが、サイト毎にアクセス制限がかかってますので、

テスト用ページをパソコン内に置いたままでテストしても目的ページが保存したクッキーは利用できません

従いまして、テスト用ページも目的ページと同じサイト(サーバー)に置いてからテストしなければなりません

【確認3】本当にクッキーは格納されていますか?

回答2の中に記した下記部分はクッキーの中身をそのままブラウザ上に表示させて確認するためのものです

ブラウザ上にOXOX=を含む文字列が出力されていないとすれば、クッキーが保存されていないか、もしくは、

テスト用ページをサイトにアップロードせず、パソコン上で動かしたかというような事が原因と考えられます

 <script type="text/javascript">
 <!--
 document.write(document.cookie);
 //-->
 </script>
◎質問者からの返答

ご回答、ありがとうございます!

どうもご教示いただきました、<【確認2】目的ページと同じサイト(サーバー)にテスト用ページを置いてテストしてますか?>が原因のようです。

ただ、これは理由があって、別々のサーバーにしか置けないものなのです。困りました・・・。


5 ● kebo987654
●18ポイント

>> 特定のクッキーは、クッキー名は同一ですが、そのクッキーが保有している個別の情報はユーザーによって違います

とのことですので、"OXOX"がクッキー名ということになります。

他の方の回答のクッキー名の部分を OXOX に置き換えれば希望の動作になると思います。


あと、コメント欄をオープンしていただけると気軽に書き込めるので助かります。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ