現在のURLから取得
window.location
からいろいろ取れる。
例えば、現在のURLが http://note.kiriukun.com:8080/aaaaa/wwwww?v=123#here
だったら↓のようになる。
現在のURLをゴミ無し (ポート / クエリストリング ?
/ フラグメント識別子 #
無し) で取得したかったら↓こう。
任意のURLを分解して取得
window.location
は現在のURLでしか使えない。好きなURLを分解する方法。
こちらの方法なら、URLにBasic認証のユーザーとパスワードが含まれてたら username
/ password
として取得できる。
URLオブジェクトを使う
a要素を使う
MDNの Location
のページのサンプルで見かけました。
クエリストリングをオブジェクトで取得
[URL.searchParams](https://developer.mozilla.org/ja/docs/Web/API/URL/searchParams)
というのもあるが、対応してるブラウザが少ない。
自力でパースするなら↓こう。
Dropbox API v2でしか見たことないが、フラグメント識別子 (URLの#以降) に同じようなパラメータが入ってる場合でも、上記の関数の window.location.search
を window.location.hash
に変更すれば同様に取得できる。
ウェルノウンポートは取得できない?
これ書いてて気づいたんだけど、少なくともHTTP/HTTPS/FTPだと、ポート番号にウェルノウンポートが明示的に指定されてても取得できないっぽい。
以下はChrome (71.0.3578.98) で試した時の結果。どれもポート番号を変えると普通に取得できるんだけど。
HTTPとHTTPSに限っては、Edge (42.17134.1.0) のコンソールで同じコードを動かすと、3行目で*「SCRIPT14: セキュリティの問題が発生しました。」*というエラーが出てそもそも分解できなかった。
他のプロトコルはまだ試せてない。