[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.
1 | < script type = 'text/javascript' src = 'jquery.js' ></ script > |
2 | < script type = 'text/javascript' src = 'purl.js' ></ script > |
JavaScriptコード
以下のコードにて全てのaタグにGETパラメータを付与します。
外部リンクにはパラメータは不要なため、内部リンク(http://~から始まるドメイン名および相対パス)にのみ付与する処理をしています。
01 | jQuery( function ( $ ) { |
04 | if (location.search == '' ) { |
09 | var req_params = $.url(location.href).param(); |
10 | var reg = new RegExp( "^(https?:)?\/\/" +document.domain); |
12 | $( 'a' ).each( function (){ |
13 | var url = $( this ).attr( 'href' ); |
14 | if ( typeof url !== "undefined" ) { |
15 | if (url.match(reg) || url.charAt(0) === "/" ) { |
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); |
すでにリンク先に指定のパラメータがある場合も想定されるため、
既存のパラメータにマージする処理をしています。
以下のサイトを参考にさせていただきました!
jQuery クエリパラメータを全リンクに付加
この記事が気に入ったら
いいね!しよう
最新情報をお届けします