web-dev-qa-db-ja.com

パラメータ、ハッシュ、http(s)://なしの現在のURL

現在のドキュメントのURLをJavascriptで取得するきちんとした方法を探しています。

  • URLにはパラメーターがありません(?parameter1 = bla&parameter2 = bla)
  • URLはハッシュタグ(#jumppoint)を削除する必要があります
  • http/httpsは削除/ httpに統合する必要があります

Location.hrefを使用して現在のURLを取得し、正規表現を使用してクリーンアップできることは知っていますが、迷惑メールを取り除くためのより良い/クリーンなソリューションがありますか?

32
bardiir

window.locationにはhref以外の多くのパラメーターがあります。完全なリファレンスはこちら: https://developer.mozilla.org/en/DOM/window.location

あなたがスターターとして探しているのは、window.location.hostnameでしょう:

「ホスト名(ポート番号または角括弧なし)。」

サンプルURL http://[www.example.com]:80/search?q=devmo#testから、ホスト名はwww.example.comになります。

パスも含めて、http://プロトコルを強制する場合は、次を試してください。

'http://' + window.location.hostname + window.location.pathname;

サイドノートとして、window.locationとは別のURLから同じパラメーターを取得する巧妙なトリックは、空のアンカーを作成することです:

var a = document.createElement('a');
a.href = 'http://www.example.com:80/search?q=devmo#test';

console.log('http://' + a.hostname + a.pathname);
55
David Hellsing

与えられた答えはどれも、プロトコルがOPタイトルのようにhttpまたはhttpsであるという事実に対処していません。これに対応するために、次のことをお勧めします。

document.location.protocol +"//"+ document.location.hostname + document.location.pathname
32
Kevin Bradshaw

Locationオブジェクト 必要なものを取得しました

window.location.hostname + window.location.pathname
5

あなたが持っている document.locationオブジェクト、したがって:

var oLoc = document.location,
    sUrl = oLoc.protocol + oLoc.hostname;
    // or "http://" + oLoc.hostname
2
balkon_smoke

これらの置換関数を使用して、ハッシュおよび検索引数を削除し、httpsをhttpに正規化できます。

url = url.replace(/#[^#]*$/, "").replace(/\?[^\?]*$/, "").replace(/^https:/, "http:");

または、本当に必要なのがドメインとパスだけである場合は、これを使用できます:

window.location.hostname + window.location.pathname
2
jfriend00

このスニペットを試してください:

if (!window.location.Origin){
  // For IE
  window.location.Origin = window.location.protocol + "//" + (window.location.port ? ':' + window.location.port : '');      
}

url = window.location.Origin + window.location.pathname;
document.write('Origin url: ' + url);
2
tuantm

これ ページは、おそらくwindow.location.Host実際に興味のある部分を取得します。しかし、私はそれをテストしていません。

0
Anthony Grist

試してください:


window.location.hostname;
0