Hatena::ブログ(Diary)

130単位

2012-10-18

jQuery クエリパラメータを全リンクに付加

やりたいこと

コード

jQueryURL Parserというライブラリを利用します。

<script type='text/javascript' src='/javascripts/jquery.js'></script>
<script type='text/javascript' src='/javascripts/purl.js'></script>
$(function(){
  if (location.search == '') {
    return;
  }
  var req_params = $.url(location.href).param();
  $('a').each(function(){
    if (/^(#|https?:|\/\/)/.test($(this).attr('href'))) {
      return;
    }
    var parsed = $(this).url();
    var old_params = (parsed.attr('query') == '') ? {} : parsed.param();
    var new_path = parsed.attr('path') + '?' + $.param($.extend(old_params, req_params));
    $(this).attr('href', new_path);
  });
});

仕様

パラメータ配列が含まれていたり、リンクに同一パラメータが存在するかもしれないので、ハッシュ化してマージする仕様にした

留意点とか

  • GETメソッドのフォームにはactionにパラメータ追加しても効かない
    • hidden要素を追加する必要がある
  • Flashでのページ遷移があると効かない
  • そもそもJavaScriptオフだと効かない

※結局実運用せず見送った

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/deeeki/20121018/add_params_to_links