Mach3.laBlog

細かすぎて伝わらないjQuery拡張 (13) “$.parseURL” – Advent Calendar 2016

この記事は賞味期限切れです。(更新から1年が経過しています)

$.parseURL() は、URLをホスト名やサーチ文字列・ハッシュなどにパースしてくれる関数です。

$.parseURL(url)

使い方

$.parseURL("https://www.example.com:8080/foo/bar?foo=bar#hash");
/*
    => {
        hash: "#hash",
        host: "www.example.com:8080",
        hostname: "www.example.com",
        href: "https://www.example.com:8080/foo/bar?foo=bar#hash",
        origin: "https://www.example.com:8080",
        pathname: "/foo/bar",
        port: "8080",
        protocol: "https:",
        search: "?foo=bar"
    }
*/

キーはLocationオブジェクトのそれに則っています。
というより、それらをそのままコピーしています。

コード

$.parseURL = function(url){
    var a, r = {};
    a = document.createElement("a");
    a.href = url;
    [
        "hash",
        "host",
        "hostname",
        "href",
        "origin",
        "pathname",
        "port",
        "protocol",
        "search"
    ].forEach(function(name){
        r[name] = a[name];
    });
    return r;
};

“a” 要素にhrefを設定してやると自動的にパースしてくれちゃうので、
それをそのまま利用しているだけのコードです。
なんなら生成した “a” 要素をそのまま返してしまっても良いと思いますが、
余計なプロパティが色々ぶら下がっているので分別して別オブジェクトに格納して返しています。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*