2015-01-14 6 views
6

AngularJS मैं जावास्क्रिप्ट में यूआरएल पार्स करने का प्रयास कर रहा हूँ, मैं निम्नलिखित रास्ता मिल गया:जावास्क्रिप्ट में यूआरएल पार्स या

var getLocation = function(href) { 
    var l = document.createElement("a"); 
    l.href = href; 
    return l; 
}; 
var l = getLocation("http://example.com:3000/path"); 
var host = l.host; // example.com 
var port = l.port; // 3000 

लेकिन मैं एक समस्या का सामना करना पड़ा है, तो इन स्थानों:

http://TLVS0015:3000/cti/YTest // the parse found the port, but its not found the host 

http://ctmwe:80/ReportServer/ReportService2010.asmx // the parse found the host, but don't found the port 

है वहाँ पार्स करने का कोई और तरीका?

+0

कर 'प्रयास करें l.hostname' – aug

+0

http://james.padolsey.com/javascript/parsing- urls-with-the-dom/ – smarber

+0

यदि आपके पास पहले से ही यूआरएल है, तो क्या आप विभाजन() को विभाजित करने और घटकों को प्राप्त करने के लिए बेहतर नहीं होंगे? (इसके बजाय फिर मेरा उद्देश्य एक वस्तु बनाएं) यदि तारों का उपयोग करने के बजाय ऐसा करने के लिए कोई लाभ है? – atmd

उत्तर

7

आप इंटरनेट एक्सप्लोरर (http://caniuse.com/#feat=url) का समर्थन की जरूरत नहीं है, तो URL का उपयोग करें। host के बजाय hostname का उपयोग करें।

> new URL("http://TLVS0015:3000/cti/YTest").hostname 
tlvs0015 

पोर्ट 80 पोर्ट 80 डिफ़ॉल्ट है है, इसलिए यह अनावश्यक है, इसलिए ""

> new URL("http://ctmwe:80/ReportServer/ReportService2010.asmx").port 
"" 

port = URL.port === "" ? 80 : URL.port 
अधिक जानकारी के लिए URL() पर

, consult the MDN API documents

नोट: 2017 जुलाई, URL के रूप में इंटरनेट एक्सप्लोरर द्वारा समर्थित नहीं है 11: http://caniuse.com/#feat=url

+10

ध्यान दें कि 'यूआरएल' एक प्रयोगात्मक सुविधा है जो अप्रैल 2015 तक इंटरनेट एक्सप्लोरर में समर्थित नहीं है। –

+0

और जुलाई 2016 के रूप में जारी है –

+0

मार्च 2017 - ऐसा लगता है कि यह आईई में कभी समर्थित नहीं था, लेकिन यह एज 14 में है और 15. http://caniuse.com/#feat=url –

12

स्रोत: - https://gist.github.com/jlong/2428561

var parser = document.createElement('a'); 
parser.href = "http://example.com:3000/pathname/?search=test#hash"; 

parser.protocol; // => "http:" 
parser.hostname; // => "example.com" 
parser.port;  // => "3000" 
parser.pathname; // => "/pathname/" 
parser.search; // => "?search=test" 
parser.hash;  // => "#hash" 
parser.host;  // => "example.com:3000" 
संबंधित मुद्दे