0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

指定した何れかのURLパラメータのパターンにマッチしていることを検証するスクリプト

Last updated at Posted at 2019-02-18

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;
  }
})();
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?