Cookieの機能を使用して、訪問数を表示してみました。
JavaScript + Cookie で訪問数を表示
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Cookie Test</title> <script type="text/javascript"> <!-- str = "count_now"; function getCookie(){ var tmp = document.cookie; var index1 = tmp.indexOf("=", 0) + 1; var count = unescape(tmp.substring(index1)); if(count == ""){ count = 1; } return count; } function setCookie(val){ document.cookie = str + "=" + escape(++val); } var access = getCookie(); setCookie(access); document.write("<h2>訪問回数</h2>"); document.write(access + " 回目の訪問です "); //--> </script> </head> </body> </html> |
■Cookieの読み込み
function getCookie(){
var tmp = document.cookie;
var index1 = tmp.indexOf("=", 0) + 1;
var count = unescape(tmp.substring(index1));
if(count == ""){
count = 1;
}
return count;
}
JavaScriptを使ってCookieの値を読み込むには、document.cookie を使います。
上の処理は、書き込まれたCookieに対して、訪問数(count)の値だけ抜きとって返す、ことをやっています。
■Cookieの書き込み
function setCookie(val){
document.cookie = str + "=" + escape(++val);
}
Cookieを書き込むには、下記の書式で行います。
document.cookie = “name = 値; expire=値; domain=値; path=値; secure”;
■気になった事(時間があるときに調べる)
*ローカルでのテストで、FireFoxとChromeの動きが違っていました。
FireFoxだと、Web上にアップロードしていなくてもCookieの値の書き込みができていました。
Chromeだと、その状態では、Cookieの値が1から増えませんでした。
書き込みがうまくいっていないみたいでした。
htmlファイルをWeb上にアップロードすると、どちらも正しい動きをしています。
設定の問題?
*訪問数(count)の数を抜き出す作業にeval()関数を使ってたのですが、Chromeだとものすごく重かったです。
調べてみると、eval()関数の危険性についてのサイトが結構ありました。
http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05b.html
http://d.hatena.ne.jp/snaka72/20090617/1245247514
0 件のコメント:
コメントを投稿