やりたいこと
現在の表示しているwebページのURLからクエリパラメタを取得したいとします。
コード例は ↓にアクセスしたときの結果です。
https://example.com?hello=こんにちは&bye=さようなら
CodePen置いておきます。https://codepen.io/anon/pen/YBdvye
方法1: モダンブラウザの場合
URL#searchParams を使います。
const params = (new URL(window.location)).searchParams;
console.log(params.get('hello')); // "こんにちは"
console.log(params.get('bye')); // "さようなら"
console.log(params.get('hoge')); // null
返却されるのは plaing Object ではなく URLSearchParams
なので、get
メソッドを通してパラメタ値を取得します。
↓ここにあるように、IE11では利用できません。
https://developer.mozilla.org/en-US/docs/Web/API/URL#Browser_compatibility
方法2: Internet Explorer 11 (IE11) の場合
URI.js を使います。
ライブラリの取得
- Bowerやnpmといったツールを使う → GitHub の README
- 必要なコンポーネントのみダウンロード → build tool
- CDN → https://cdnjs.com/libraries/URI.js/
使い方
var uri = new URI(window.location);
var params = uri.query(true);
console.log(params['hello']); // "こんにちは"
console.log(params['bye']); // "さようなら"
console.log(params['hoge']); // undefined
URI#query
の引数を true
にすると Object 型で返ってきます。それ以外はクエリパラメタの文字列そのもの(hello=こんにちは&bye=さようなら
)が返ってきます。
http://medialize.github.io/URI.js/docs.html#accessors-search
不採用
-
split('&')
とか使う・正規表現を使う- イレギュラーなケースを考えたくないので不採用
-
purl.js
- README.md にあるように、メンテナンスされていません