2010年7月15日木曜日

jQueryユーティリティ関数を追加するプラグイン例

extend関数を使って追加する。
実行は jQuery.f() の形式。

プラグインのコード

(function($){
  $.extend({
    // get cookie
    myGetCookie: function(name){
      var regexp = new RegExp('; ' + name + '=([^;]*);');
     var match  = ('; ' + document.cookie + ';').match(regexp);
     if(match){
      return match[1];
     }
    },
    // set cookie
    mySetCookie: function(key, val, validFunc){
      var flg = true;
      if(validFunc){
        if(!validFunc(val)){
          flg = false;
        }
      }
      if(flg){
        document.cookie= key + '=' + encodeURIComponent(val) + ';path=/;';
      }
    },
    // referrer -> key
    classifyReferrer: function(ref){
      if('affiliate-b.com/'.indexOf(ref) >= 0){
        return 'アフィリエイト';
      }else if('google.co.jp/'.indexOf(ref) >= 0){
        return 'Google-Organic';
      }else if('google.com/aclk'.indexOf(ref) >= 0){
        return 'Google-Adwords';
      }else if('yahoo'.indexOf(ref) >= 0){
        return 'Yahoo-Organic';
      }else if('overture.com'.indexOf(ref) >= 0){
        return 'Yahoo-Overture';
      }else{
        return 'その他';
      }
    }
  });
})(jQuery);

呼び出し元

/* conversion tracking */
  var CONVERSION_COOKIE_NAME = 'xx_ref';
  var CONVERSION_INPUT_NAME  = 'xx_ref';
  // exec.
  if($('body#form-idx').length){
    var c;
    if(c = jQuery.myGetCookie(CONVERSION_COOKIE_NAME)){
      $('form').append('');
    }
  } else {
    if(document.referrer) {
      jQuery.mySetCookie(CONVERSION_COOKIE_NAME,
                         jQuery.classifyReferrer(document.referrer),
                         function(val){
                           return (location.hostname.indexOf(val, 0) < 0);
                         });
    }
  }

0 件のコメント:

コメントを投稿