जावास्क्रिप्ट में किसी भी पैरामीटर के बिना URL कैसे प्राप्त करें?


176

अगर मैं उपयोग करता हूं:

alert(window.location.href);

मुझे क्वेरी स्ट्रिंग सहित सब कुछ मिलता है। क्या केवल उदाहरण के लिए मुख्य यूआरएल भाग प्राप्त करने का एक तरीका है:

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

के बजाय

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

जवाबों:


283

यह संभव है, लेकिन आपको इसे locationऑब्जेक्ट से मैन्युअल रूप से बनाना होगा :

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

14
ध्यान दें कि आपको स्थान की आपूर्ति करने की आवश्यकता नहीं है। सभी आधुनिक ब्राउज़रों (IE6 सहित) के रूप में चॉकलेट को स्वचालित रूप से वर्तमान प्रोटोकॉल प्राप्त होगा। यानी:'//' + location.host + location.pathname
जॉनी ने

10
@JonnyReeves यदि आप इसे वर्तमान दस्तावेज़ में उपयोग कर रहे हैं, तो यह सच है: अच्छा बिंदु। ऐसे अवसर हैं जब यह आवश्यक हो सकता है, उदाहरण के लिए यदि URL को सादे पाठ के रूप में आउटपुट किया जाए।
lonesomeday

1
@lonesomeday आपकी प्रतिक्रिया का अर्थ है कि यह एकमात्र तरीका है, जो यह नहीं है।
Oddman

5
यह अनुपलब्ध पोर्ट है, इसलिए यह पृष्ठ के लिए गलत परिणाम http://www.example.com:8080/asdf.html?foo=bar
लौटाएगा

3
आप कुछ पात्रों को सहेज सकते हैं location.origin, जिनके बारे में मेरा मानना ​​है कि @ izogfif की चिंता का भी समाधान है।
कोडर

171

हर जवाब बल्कि जटिल है। यहाँ:

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

भले ही ए? मौजूद नहीं है, यह अभी भी पहला तर्क लौटाएगा, जो आपका पूर्ण URL, माइनस क्वेरी स्ट्रिंग होगा।

यह भी प्रोटोकॉल-अज्ञेयवादी है, जिसका अर्थ है कि आप इसे ftp, itunes.etc जैसी चीजों के लिए भी उपयोग कर सकते हैं।


39
अगर आपको लंगर हटाने की जरूरत हैwindow.location.href.split(/[?#]/)[0];
बहतीन अनगोर्मस

वास्तव में हर उत्तर बल्कि उलझा हुआ है
mehmet

@ सभी कान अगर आपके पास एक सरल तरीका है :)
Oddman

1
@ ओडमैन, मुझे बिलकुल याद नहीं है कि मैं क्या सोच रहा था, लेकिन मुझे लगता है कि यह एक सकारात्मक बयान हो सकता है :))
mehmet

क्यों (यदि यह है) यह उत्तर स्वीकार किए गए एक से बेहतर है ??
विशाल - जावेद - सीक्यू

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]
एक्टिमेल

5

आप एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं: window.location.href.match(/^[^\#\?]+/)[0]


5

आप समास कर सकते हैं originऔर pathnameयदि थेरेस एक पोर्ट को प्रस्तुत करता है जैसे कि example.com:80, उसे भी शामिल किया जाएगा।

location.origin + location.pathname

2

यदि आप प्रलेखन को देखते हैं तो आप केवल उन गुणों को ले सकते हैं जिनकी आपको windowऑब्जेक्ट से दिलचस्पी है

protocol + '//' + hostname + pathname
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.