2012-03-01 10 views
24

मैं जावास्क्रिप्ट में वर्तमान दस्तावेज़ का यूआरएल प्राप्त करने का एक साफ तरीका ढूंढ रहा हूं।पैरामीटर, हैश, http (ओं) के बिना वर्तमान यूआरएल: //

  • URL पैरामीटर (? Parameter1 = bla & parameter2 = bla)
  • यूआरएल हैश टैग (#jumppoint)
  • HTTP/HTTPS जा हटाया/में समेकित चाहिए की साफ होना चाहिए की साफ होना चाहिए http

मैं मैं location.href के साथ वर्तमान URL प्राप्त है और फिर इसे साफ करने के लिए कुछ नियमित अभिव्यक्ति का उपयोग कर सकते है, लेकिन हो सकता है वहाँ के लिए एक अच्छे/सफाई घोल कबाड़ से छुटकारा हो रही है?

+0

मैं यूआरएल "जंक" के महत्वपूर्ण हिस्से फोन करने के लिए सिर्फ downvote करने के लिए परीक्षा रहा हूँ! – Douglas

+0

@ डगलस महत्व व्यक्तिपरक है। यह पूरी तरह से व्यवहार्य है कि इस कार्य के संदर्भ में केवल मेजबान प्रासंगिक हिस्सा है। –

+0

ptorocol ftp हो सकता है: साथ ही, क्या आपको इसे विचार करने की आवश्यकता है? – kirilloid

उत्तर

46

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; 

एक तरफ ध्यान दें के रूप में, एक गंधा चाल खिड़की से अन्य यूआरएल से समान पैरामीटर प्राप्त करने के लिए। स्थान एक खाली लंगर बनाने के लिए है:

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

console.log('http://' + a.hostname + a.pathname); 
+1

मुझे लगता है कि वे पथनाम भी चाहते हैं। – jfriend00

+0

@ jfriend00 हाँ, दस्तावेज़ों को चीजों को समझने के लिए पर्याप्त होना चाहिए, लेकिन मैंने इसे स्पष्टता के लिए भी जोड़ा। – David

+1

'http: // '+ window.location.hostname + window.location.pathname;' आप पोर्ट – Alex

0

This पेज इंगित करता है कि आप शायद window.location.host उपयोग करते हैं, आप वास्तव में भाग में मैं इसे परीक्षण नहीं किया रुचि रखते हैं प्राप्त करने के लिए, हालांकि हो सकता है।।

+8

पोर्ट भूल गए हैं, फिर इसे जांचें ... – Konerak

2

आपके पास document.location वस्तु है, तो:

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

प्रयास करें:

 

window.location.hostname; 
 
1

आप इन प्रतिस्थापन कार्यों का उपयोग कर सकते हैं करने के लिए http हैश को हटाने और खोज तर्क और सामान्य बनाने में https:

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

या, यदि आप वास्तव में डोमेन और पथ चाहते हैं, तो आप इसका उपयोग कर सकते हैं :

window.location.hostname + window.location.pathname 
27

दिए गए उत्तर से कोई भी जरूरत है तथ्य यह है कि प्रोटोकॉल http या https हो सकता है ऑप्स शीर्षक में के रूप में संबोधित मिला है।इस समायोजित करने के लिए मेरा सुझाव है:

document.location.protocol +"//"+ document.location.hostname + document.location.pathname 
+1

"http/https को http में हटाया/समेकित किया जाना चाहिए" ... – David

+0

यदि आपके पास अपने यूआरएल में पोर्ट नंबर है, तो यह समाधान बंदरगाह संख्या खोने का कारण बनता है, यानी http: // localhost: 49346/http: // localhost बन जाता है। – Kris

2

इस स्निपेट का प्रयास करें:

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);

+0

यह पहले से ही बहुत पहले से ही जवाब दिया गया था। और यह उत्तर प्रश्न के बारे में गलत है क्योंकि यह अभी भी https: // मूल प्रोटोकॉल के रूप में प्रदान करेगा यदि पृष्ठ https है - लेकिन इसे प्रोटोकॉल को स्ट्रिप करना चाहिए/इसे http के रूप में पढ़ना चाहिए। – bardiir

+0

क्या आईई कोड में होस्ट नाम गायब नहीं है? 'window.location.origin = window.location.protocol + "//" + (window.location.port?': '+ Window.location.port:' ') +'/'+ window.location की तरह। होस्टनाम; ' – Alex

+0

हां, लेकिन उस क्रम में नहीं: window.location.origin = window.location.protocol +" // "+ window.location.hostname + (window.location.port? ':' + window.location। बंदरगाह : ''); – Zzirconium

संबंधित मुद्दे