JavaScriptでパラメータなしでURLを取得するにはどうすればよいですか?


176

私が使用する場合:

alert(window.location.href);

クエリ文字列を含むすべてを取得します。たとえば、メインのURL部分を取得する方法はありますか。

http://mysite.com/somedir/somefile/

の代わりに

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

回答:


282

これは可能ですが、locationオブジェクトから手動で作成する必要があります

location.protocol + '//' + location.host + location.pathname

14
現在のすべてのブラウザー(IE6を含む)は自動的に現在のプロトコルを継承するため、location.protocolを指定する必要はありません。ie:'//' + location.host + location.pathname
JonnyReeves

10
@JonnyReeves現在のドキュメントで使用している場合、それは事実です。URLをプレーンテキストとして出力する場合など、必要になる場合があります。
lonesomeday

1
@lonesomedayあなたの応答はそれが唯一の方法であることを意味しますが、そうではありません。
オッドマン

5
ポートが欠落しているため、ページに対して誤った結果が返されますhttp://www.example.com:8080/asdf.html?foo=bar
izogfif 2018

3
いくつかの文字をlocation.originで保存できます。これは、@ izogfifの懸念にも対応していると思います。
Coderer 2018

171

すべての答えはかなり複雑です。ここに:

var url = window.location.href.split('?')[0];

たとえ?存在しない場合でも、最初の引数を返します。これは完全なURLからクエリ文字列を除いたものになります。

また、プロトコルに依存しないため、ftpやitunes.etcなどにも使用できます。


39
アンカーを削除する必要がある場合window.location.href.split(/[?#]/)[0];
Bahattin Ungormus

実際、すべての回答はかなり複雑です
メメット

あなたがより簡単なアプローチをしているなら、@ mehmet all ears :)
Oddman

1
@オッドマン、私はそのとき私が何を考えていたかを絶対に覚えていませんが、それは肯定的な声明かもしれないと思います:))
mehmet

なぜ(もしそうなら)この回答が受け入れ済みとマークされたものよりも優れているのですか?
Vishal--JAVA--CQ

16

使用する indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

5
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

3
これは、そのパラメータが定義されていることを前提としています。はるかに良いですurl.split('?')[0]
actimel 2014

5

正規表現を使用できます。 window.location.href.match(/^[^\#\?]+/)[0]


5

あなたはCONCATできるoriginpathnametheresののようなポート提示した場合、example.com:80同様に含まれます。

location.origin + location.pathname

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.