2011年5月6日金曜日

イベント計測

URLやページ名を指定してイベントを発生させる。

■計測要件 
URLが、www.domain.com/product/detail/~で
ページ名が、product:detail:~の場合に
eventのprodViewを発生させる。

・URLから指定する場合。
if(location.pathname.match(/\/product\/detail\//))s.events="prodView"

・ページ名から指定する場合。
if(s.pageName.match(/\/product\/detail\//))s.events="prodView"
//or
if(s.pageName.indexOf("\/product\/detail\/")>-1)s.events="prodView"


※ページ上でonclickのeventが計測されることを想定すると、
 画面ロード時の最初だけ、event発生させる必要がある。その場合は、
if(s.pageName.match(/\/product\/detail\//)&&!s.prop49)s.events="prodView"

などの対応を行う。s.prop49は、この記述より下で値が設定される変数で、
s.prop49が存在しないという条件を加えることでロード時のみ計測される。

URLからページ名を作成する<その3>クエリ文字

クエリを含むURLからページ名を作成する

前提:URLからページ名を作成する<その1>を利用
プラグインs.getQueryParamを利用

■ページ名命名要件
www.domain.com/cart?action=entry → cart:entery
www.domain.com/cart?action=confirm → cart:confirm
www.domain.com/cart?action=complete → cart:complete

・クエリ名actionの値をページ名につける
var par_act=s.getQueryParam("action")
if(par_act)s.pageName=s.pageName+":"+par_act

<解説>
//クエリ名actionの値をpar_actに代入
var par_act=s.getQueryParam("action")
//par_actが存在する場合は、ページ名に「ページ名:par_act」を代入
if(par_act)s.pageName=s.pageName+":"+par_act
※クエリが存在する場合という条件をつけてないと、
クエリがない場合に「ページ名:」とコロンのみがついてしまう。

・cartの場合だけ、クエリ名actionの値をページ名につける
var par_act=s.getQueryParam("action")
if(s.pageName=="cart"&&par_act)s.pageName=s.pageName+":"+par_act


<その1><その2>参照

URLからページ名を作成する<その2>階層・部分一致

前提:URLからページ名を作成する<その1>を利用

■ページ名命名要件
www.domain.com/cart/entry → cart:entery
www.domain.com/cart/confirm/step1/ → cart:confirm
www.domain.com/cart/confirm/step2/ → cart:confirm
www.domain.com/cart/confirm/step3/ → cart:confirm
www.domain.com/cart/complete → cart:complete

・全てのページ名は2階層までとする場合
var hier01=s.pageName.split(":")[0]
var hier02=s.pageName.split(":")[1]
if(hier02){
s.pageName=hier01+":"+hier02
}else{
s.pageName=hier01
}
<解説>
//ページ名をコロン(:)で分割した1階層目をhier01とする
var hier01=s.pageName.split(":")[0]
//ページ名をコロン(:)で分割した2階層目をhier02とする
var hier02=s.pageName.split(":")[1]
//2階層目が存在すれば、ページ名に1階層目:2階層目を代入する
if(hier02){
s.pageName=hier01+":"+hier02
//2階層目が存在しない場合、ページ名に1階層目を代入する
}else{
s.pageName=hier01
}


・cart:confirmが含まれる場合は、cart:confirmとすると指定する場合

 matchを使う場合
if(s.pageName.match(/cart:confirm/))s.pageName="cart:confirm"

 indexOfを使う場合
if(s.pageName.indexOf("cart:confirm")>-1)s.pageName="cart:confirm"

※matchよりindexOfの方が処理が早いという話もあります。

<その1><その3>参照

URLからページ名を作成する<その1>

前提:getPageName v2.1を利用

・pageType及びpageNameがcode_to_pasteで指定されていない場合。
 s.getPageNameを利用してページ名作成する。
if(!s.pageType&&!s.pageName){
s.pageName=s.getPageName()
}


・拡張子を削除する。:indexを削除する
if(s.pageName)s.pageName=s.pageName.replace(/\.[a-z]+$/,"").replace(":index","")


・ページ名が設定されていない場合は、「top」を代入する。
 ※TOPページでURLが次のような場合、www.domain.com/ や www.domain.com/index.html
  プラグインを利用しても、ページ名に値が入らないため、TOPと指定する。 
if(!s.pageName)s.pageName="top"


<その2><その3>参照