2010年7月14日水曜日

JavaScriptでCookie処理

ポイント

  • リファラーの取得
  • クッキーの取得(パースするのが少し煩わしい)
  • encodeURIComponent.encode()
  • 高階関数(値に応じて保存するかどうかを判断する)

/* conversion tracking */
  var CONVERSION_COOKIE_NAME = 'ones_style_ref';
  // get cookie
  function myGetCookie(name){
    var regexp = new RegExp('; ' + name + '=([^;]*);');
   var match  = ('; ' + document.cookie + ';').match(regexp);
   if(match){
    return match[1];
   }
  }
  // set cookie
  function mySetCookie(key, val, validFunc){
    var flg = true;
    if(validFunc){
      if(!validFunc(val)){
        flg = false;
      }
    }
    if(flg){
      document.cookie= key + '=' + encodeURIComponent(val) + ';path=/;';
    }
  }
  // exec.
  if($('body#form-idx').length){
    var c;
    if(c = myGetCookie(CONVERSION_COOKIE_NAME)){
      $('form').append('');
    }
  } else {
    if(document.referrer) {
      mySetCookie(CONVERSION_COOKIE_NAME,
                  document.referrer,
                  function(val){
                    return (location.hostname.indexOf(val, 0) < 0);
                  });
    }
  }

参考

0 件のコメント:

コメントを投稿