Webサイトへのアクセスがあったとき、
URL内のGETパラメータがこちらの指定したパターンの何れかにマッチすればTRUEを返すスクリプト。
変数TARGET_SEARCH_PATTERN
に目的のパラメータの組み合わせを入力することによって使用する。
使用用途
- 特定のGETパラメータを持ってWebサイト訪問したユーザーを識別してポップアップを表示する
- 特定のGETパラメータを持ってWebサイト訪問したユーザーにCookieを付与し、計測対象から除外する
コード
(function(){
// TARGET_SEARCH_PATTERN で指定したパターン配列の何れかがマッチすればTRUEを返す
var TARGET_SEARCH_PATTERN = [
{'ref':/^google$/}, // URLのGETパラメータにref=googleを含んでいるならTRUE
{'utm_medium':/^email$/,'utm_source':/^premium_.*$/}, // パラメータ"utm_medium"が"premium_"で始まればTRUE
{'utm_medium':/^cpc$/,'utm_source':/^(google|yahoo)$/}, // パラメータ"utm_medium"が"cpc"でかつ、"utm_source"が"google"か"yahoo"であればTRUE
{'utm_medium':/^cpm$/,'utm_source':/^facebook$/},
];
var searchDic = getSearchDictionary(location.search);
var flag = false;
if(Object.keys(searchDic).length > 0){
for(var i = 0; i < TARGET_SEARCH_PATTERN.length; i++){
flag = false;
for(var query in TARGET_SEARCH_PATTERN[i]){
if(query in searchDic && hasTargetSearchValue(searchDic[query],TARGET_SEARCH_PATTERN[i][query])){
flag = true;
}else{
flag = false;
break;
}
}
if(flag){return true;}
}
}
return false;
function getSearchDictionary(queryString){
var s = queryString.split('&');
var sDic = {};
if(s.length > 0){
s[0] = s[0].slice(1);
for(var i = 0; i < s.length; i++){
if(!(s[i].split('=')[0] in sDic)){
sDic[s[i].split('=')[0]] = [s[i].split('=')[1]];
}else{
sDic[s[i].split('=')[0]].push(s[i].split('=')[1]);
}
}
}
return sDic;
}
function hasTargetSearchValue(qVals,valPattern){
var flag = false;
for(var i = 0; i < qVals.length; i++){
if(valPattern.test(qVals[i])){
flag = true;
}
}
return flag;
}
})();