「階層化されたページのそれぞれのアクセス日を配列にする?」久々の書き込みのはずが・・・
仕事が立て続けに、そして切れることもなく、ただただ息切れするは俺だけ。
明後日の仕事の峠を越えれば、一安心。
ふと、教えてgooの質問に答えようとしていたら、質問を消されていた。
cookie を利用したアクセス日の配列化(?)
文字数の制限もあるだろうし、何かしら対策が必要なのだろう。
<!DOCTYPE html> <titel>Cookie を利用して、階層化されたページのアクセス日を記録する</titel> <body> <script> function setCookie (doc, name, value, expires, path, domain, secure) { if (3 > arguments.length) throw new Error; var cookie = [ encodeURIComponent (name) + '=' + encodeURIComponent (value) ]; if (expires) cookie[cookie.length] = 'expires=' + new Date (expires).toUTCString (); if (path) cookie[cookie.length] = 'path=' + encodeURI (path); if (domain) cookie[cookie.length] = 'domain=' + encodeURI (domain); if (secure) cookie.push ('secure'); doc.cookie = cookie.join ('; '); } function getCookie (doc, name) { if (2 > arguments.length) throw new Error; var n = encodeURIComponent (name).replace (/\W/g, '\\$&'); var v = doc.cookie.match (new RegExp (n + '\\s*=\\s*(.*?)(?:[;,\\s]|$)')); return (v) ? decodeURIComponent (v[1]): ''; } function toObj (str, sep) { var result = {}; var ary = str.split (sep || ','); var i, nv, name; for (i = 0; nv = ary[i++]; ) if ((nv = nv.split (':'), name = nv[0])) result[name] = nv[1] || ''; return result; } function toStr (obj, sep) { var i, result = []; for (i in obj) if (obj.hasOwnProperty (i)) result[result.length] = i + ':' + obj[i]; return result.join (sep || ','); } function toDate (date) { return [ date.getFullYear (), date.getMonth () + 1, date.getDate (), date.getSeconds () ].join ('/'); } //_________________________ var save = 60;//sec var valueName = 'visit'; var pathBase = '/hoge/';//ここにルート var key = location.pathname.substring (pathBase.length) || 'root'; var separater = '|'; var data = toObj (getCookie (document, valueName)); var now = new Date; var today = toDate (now); var dd = (now.setSeconds (now.getSeconds () + save), now).toGMTString (); var tmp, buf = []; (tmp = data[key]) ? buf = tmp.split (separater) : buf[0] = today; buf[1] = today; data[key] = buf.join (separater); setCookie (document, valueName, toStr (data), dd, pathBase, location.host); alert(toStr(data, '\n')); </script> <p><a href="./a/">a</a></p>