JavaScript Market - 動きのあるホームページを作る為の各種JavaScript のサンプルと小技集を公開中

JavaScript

JavaScriptって…? | JavaScript応用のツボ | ブラウザについて | JavaScript Market 利用規程 | JavaScript 各種サンプル | JavaScript 小技集

クッキーカウンター2002

■ 2002,01,07 細部変更
■ 2002,01,21 cookie取得ルーチンを簡略化

来訪者の名前表示機能は表示非表示の切り替え可能。
一度入力した名前は、名前をクリックすることで変更する事もできます。
このサンプルは来訪の度にカウントするモードになっているので
ブラウザの更新(リロード)ボタンをクリックすればカウントが加算されます。
(サンプルのため枠で囲ってあります)
尚、クッキーデータの取得ルーチンを簡略化するため、IE3/Netscape3以下には対応していません

■ このスクリプトのソース
<script>
// クッキーの有効日数
days = 30;

// クッキーカウンターの動作条件
// 0:常にカウント 1:同日の再来訪はカウントしない
count_mode = 0;

// 名前の表示を 0:しない 1:する
name_mode = 1;

// 名前部分の文字色設定
col = "#9900cc";

// クッキーデータに付ける名前
cookie_name = "jsm_cc";

ex = new Date();
cy = ex.getYear();
if (cy < 2000) cy += 1900;
cm = ex.getMonth() + 1;
cd = ex.getDate();
ch = ex.getHours();
cmin = ex.getMinutes();
if (cm < 10) cm = "0" + cm;
if (cd < 10) cd = "0" + cd;
if (ch < 10) ch = "0" + ch;
if (cmin < 10) cmin = "0" + cmin;
td = cy + "/" + cm + "/" + cd + " " + ch + ":" + cmin;

function input() {
   if (Cname && Cname != "null")
      val = prompt('お名前変更(空白にしてOKをクリックすれば削除できます)',Cname);
         /* ↑名前の登録がある場合のプロンプトへの表示文字列 */

   else val = prompt('お名前の入力(来訪の度にお名前で挨拶させて頂きます)','');
         /* ↑名前の登録が無い場合のプロンプトへの表示文字列 */

   if (val != null) {
      val = escape(val);
      if (val.match("%00")) val = val.substring(0,val.indexOf("%00"));
      if (! count_mode) count --;
      set_data =  fast + "," + last + "," + count + "," + val;
      ex = new Date();
      set_cookie(set_data);
      document.location = document.location;
   }
}

function set_cookie(val) {
   ex = "" + new Date(ex.getTime() + (1000 * 60 * 60 * 24 * days));
   y = ex.substring(ex.length-4,ex.length);
   p = ex.split(" ");
   ex = p[0] + ", " + p[2] + "-" + p[1] + "-" + y + " " + p[3] + " GMT;";
   val = cookie_name + "=" + set_data +"; expires=" + ex;
   document.cookie = val;
}

cookie_value = document.cookie;
cook = new Array();
cv = cookie_value.split(";");
for (i in cv) {
   a = cv[i].split("=");
   a[0] = a[0].replace(" ","");
   cook[a[0]] = a[1];
}
if (cook[cookie_name]) cookie_value = cook[cookie_name];
else cookie_value = "";

if (cookie_value) {
   gd = cookie_value.split(",");
   if (gd[0]) fast = gd[0]; else fast = td;
   if (gd[1]) last = gd[1]; else last = td;
   if (gd[2]) count = eval(gd[2]); else count = 0;
   if (gd[3]) Cname = unescape(gd[3]); else Cname = "";
}
else { fast = last = td; count = 0; Cname = ""; }

if (count_mode && last.substring(0,10) != td.substring(0,10)) count++;
else if (! count_mode) count ++;

if (name_mode && Cname)    // 名前の登録がある場合の挨拶文
   str = "<a href='javascript:input()' title='クリックすると名前の変更(削除)が出来ます'>" +
   "<font color='" + col + "'>" + Cname + "</font></a>様いらっしゃいませ!<p>";
else if (name_mode)     // 名前の登録がない場合の挨拶文
   str = "<a href='javascript:input()' title='クリックすると名前が登録できます'>" +
   "<font color='" + col + "'>よろしかったらお名前を教えて下さい</font></a><p>";
else str = "";

/* ↓この部分が実際に表示される文字列です */
str += "初回来訪日:" + fast + "<br>最終来訪日:" + last + "<br>来訪回数:" + count;

last = td;
set_data =  fast + "," + last + "," + count + "," + escape(Cname);
set_cookie(set_data);

// Copyright (C) 1998-2002 suepon , All rights reserved.
// Script found at http://suepon.com/
</script>
<!-- ここまでは<head></head>内に貼り付け -->

<!-- クッキーカウンターを表示する部分に以下を貼り付け -->
<script>
document.write(str);
</script>


suepon.com | CGI作成・CGI制作 | ドメイン検索 | バナー自動作成 | Google Dance jp | 松浦亜弥 (H.P.memo) | パソコン | ネイル