[javascript]GETパラメータをページ内の内部リンク全てに付与する


特定のURLパラメータがある場合に、全ページに同じパラメータを渡す必要があり、、
やり方を調べたのでブログでもシェアします。

jQueryとPurlライブラリを読み込む

Purlは以下からダウンロードをします。
GitHub – allmarkedup/purl: [NO LONGER MAINTAINED] A JS utility for for parsing URLs and extracting information out of them.

IT/WEB業界への転職なら求人サイトGreen

1<script type='text/javascript' src='jquery.js'></script>
2<script type='text/javascript' src='purl.js'></script>

JavaScriptコード

以下のコードにて全てのaタグにGETパラメータを付与します。
外部リンクにはパラメータは不要なため、内部リンク(http://~から始まるドメイン名および相対パス)にのみ付与する処理をしています。

01jQuery( function( $ ) {
02 
03 //GETパラメータが無い場合は処理終了
04  if (location.search == '') {
05    return;
06  }
07 
08  //GETで取得する値
09  var req_params = $.url(location.href).param();
10  var reg = new RegExp("^(https?:)?\/\/"+document.domain);
11 
12  $('a').each(function(){
13    var url = $(this).attr('href');
14    if(typeof url !== "undefined") {
15        if (url.match(reg) || url.charAt(0) === "/") {
16            //内部リンク時の処理
17            var parsed = $(this).url();
18            var old_params = (parsed.attr('query') == '') ? {} : parsed.param();
19            var new_path = parsed.attr('path') + '?' + $.param($.extend(old_params, req_params));
20            $(this).attr('href', new_path);
21        }
22    }
23  });
24});

すでにリンク先に指定のパラメータがある場合も想定されるため、
既存のパラメータにマージする処理をしています。

以下のサイトを参考にさせていただきました!
jQuery クエリパラメータを全リンクに付加

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

follow us in feedly