मुझे दिए गए URL से पूरा प्रोटोकॉल, डोमेन और पोर्ट निकालने की आवश्यकता है। उदाहरण के लिए:
https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
मुझे दिए गए URL से पूरा प्रोटोकॉल, डोमेन और पोर्ट निकालने की आवश्यकता है। उदाहरण के लिए:
https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
जवाबों:
पहले वर्तमान पता प्राप्त करें
var url = window.location.href
तो बस उस स्ट्रिंग को पार्स करें
var arr = url.split("/");
आपका url है:
var result = arr[0] + "//" + arr[2]
उम्मीद है की यह मदद करेगा
location
ऑब्जेक्ट उपलब्ध नहीं है (ब्राउज़र के बाहर js!)
location
) का उपयोग करता है, लेकिन किसी भी यूआरएल के लिए इस्तेमाल किया जा सकता है । यह साफ है कि यह जाँच करें।
window.location.href.split('/').slice(0, 3).join('/')
var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
about://
। हालांकि, मैं यह जानने के लिए उत्सुक हूं कि इसके लिए उपयोग मामला क्या होगा about:blank
? मुझे यकीन नहीं है कि कोई भी ब्राउज़र प्लग इन संसाधनों को इंजेक्ट करता है about:blank
, लेकिन ऐसा लगता है कि केवल उपयोग का मामला हो सकता है।
location
काम करने के लिए इस बात के लिए)
location.host
करने के बजाय location.hostname
+ location.port
?
इनमें से कोई भी उत्तर प्रश्न को पूरी तरह से संबोधित नहीं करता है, जो एक मनमाने ढंग से यूआरएल के लिए कहता है, विशेष रूप से वर्तमान पृष्ठ का यूआरएल नहीं।
आप URL API का उपयोग कर सकते हैं (IE11 द्वारा समर्थित नहीं है, लेकिन हर जगह उपलब्ध है )।
इससे खोज पारमों तक पहुंचना आसान हो जाता है । एक और बोनस: इसका उपयोग वेब वर्कर में किया जा सकता है क्योंकि यह DOM पर निर्भर नहीं करता है।
const url = new URL('http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');
यदि आपको पुराने ब्राउज़र पर काम करने के लिए इसकी आवश्यकता है तो इसका उपयोग करें।
// Create an anchor element (note: no need to append this element to the document)
const url = document.createElement('a');
// Set href to any path
url.setAttribute('href', 'http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');
ब्राउज़र का बिल्ट-इन पार्सर पहले ही अपना काम कर चुका है। अब आप बस उन हिस्सों को पकड़ सकते हैं जिनकी आपको ज़रूरत है (ध्यान दें कि यह उपरोक्त दोनों तरीकों के लिए काम करता है):
// Get any piece of the url you're interested in
url.hostname; // 'example.com'
url.port; // 12345
url.search; // '?startIndex=1&pageSize=10'
url.pathname; // '/blog/foo/bar'
url.protocol; // 'http:'
संभावना है कि आप संभवतः खोज url params को अलग करना चाहते हैं, क्योंकि 'startIndex = 1 & pageSize = 10' अपने आप में बहुत उपयोगी नहीं है।
यदि आपने ऊपर दिए गए तरीके 1 (URL API) का उपयोग किया है, तो आप बस खोजप्रेमर्स गेटर्स का उपयोग करें:
url.searchParams.get('startIndex'); // '1'
या सभी पैरामीटर प्राप्त करने के लिए:
function searchParamsToObj(searchParams) {
const paramsMap = Array
.from(url.searchParams)
.reduce((params, [key, val]) => params.set(key, val), new Map());
return Object.fromEntries(paramsMap);
}
searchParamsToObj(url.searchParams);
// -> { startIndex: '1', pageSize: '10' }
यदि आपने विधि 2 (पुराना तरीका) का उपयोग किया है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:
// Simple object output (note: does NOT preserve duplicate keys).
var params = url.search.substr(1); // remove '?' prefix
params
.split('&')
.reduce((accum, keyval) => {
const [key, val] = keyval.split('=');
accum[key] = val;
return accum;
}, {});
// -> { startIndex: '1', pageSize: '10' }
var link = document.createElement('a'); link.setAttribute('href', 'google.com'); console.log(link.protocol)
http
शायद एक पेज पर ऐसा कर रहे हैं ? यदि निर्दिष्ट नहीं किया गया है तो यह वर्तमान स्थान से 'वारिस' होगा
host
और hostname
। पूर्व में बंदरगाह (जैसे localhost:3000
) शामिल है, जबकि बाद वाला केवल मेजबान का नाम (जैसे localhost
) है।
किसी कारण के लिए सभी जवाब सभी ओवरकिल हैं। यह सब यह लेता है:
window.location.origin
अधिक विवरण यहां देखे जा सकते हैं: https://developer.mozilla.org/en-US/docs/Web/API/window.location#Properties
URLUtils
इंटरफ़ेस को लागू करता है जिसे WHATWG पर परिभाषित किया गया है और इसमें origin
विशेषता शामिल है ।
जैसा कि पहले ही उल्लेख किया गया है कि अभी तक पूरी तरह से समर्थित नहीं है, window.location.origin
लेकिन इसका उपयोग करने के लिए या उपयोग करने के लिए एक नया चर बनाने के बजाय, मैं इसके लिए जांच करना पसंद करता हूं और अगर इसे सेट करने के लिए सेट नहीं है।
उदाहरण के लिए;
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
मैंने वास्तव में इसके बारे में कुछ महीने पहले लिखा था। A fix for window.location.origin
window.location.origin
है कि मौजूद है। धन्यवाद। ^ ^
मेज़बान
var url = window.location.host;
रिटर्न localhost:2679
होस्ट नाम
var url = window.location.hostname;
रिटर्न localhost
localhost/
है localhost:3000
।
window.location.origin
समान पाने के लिए पर्याप्त होगा।
प्रोटोकॉल गुण कोलन (:) सहित वर्तमान URL के प्रोटोकॉल को सेट या रिटर्न करता है।
इसका मतलब है कि यदि आप केवल HTTP / HTTPS हिस्सा प्राप्त करना चाहते हैं तो आप कुछ इस तरह से कर सकते हैं:
var protocol = window.location.protocol.replace(/:/g,'')
डोमेन के लिए आप इसका उपयोग कर सकते हैं:
var domain = window.location.hostname;
पोर्ट के लिए आप उपयोग कर सकते हैं:
var port = window.location.port;
ध्यान रखें कि पोर्ट खाली स्ट्रिंग होगा यदि वह URL में दिखाई नहीं दे रहा है। उदाहरण के लिए:
यदि आपको कोई पोर्ट उपयोग नहीं है, तो आपको 80/443 दिखाने की आवश्यकता है
var port = window.location.port || (protocol === 'https' ? '443' : '80');
क्यों नहीं उपयोग करें:
let full = window.location.origin
वास्तव में, window.location.origin मानकों का पालन करने वाले ब्राउज़रों में ठीक काम करता है, लेकिन क्या लगता है। IE मानकों का पालन नहीं कर रहा है।
तो इस वजह से, यह IE, फ़ायरफ़ॉक्स और क्रोम में मेरे लिए काम करता है:
var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
लेकिन संभावित भविष्य के संवर्द्धन के लिए, जो संघर्ष का कारण बन सकता है, मैंने "स्थान" ऑब्जेक्ट से पहले "विंडो" संदर्भ निर्दिष्ट किया।
var full = window.location.protocol+'//'+window.location.hostname+(window.location.port ? ':'+window.location.port: '');
यहाँ समाधान मैं उपयोग कर रहा हूँ:
const result = `${ window.location.protocol }//${ window.location.host }`;
संपादित करें:
क्रॉस-ब्राउज़र संगतता जोड़ने के लिए, निम्नलिखित का उपयोग करें:
const result = `${ window.location.protocol }//${ window.location.hostname + (window.location.port ? ':' + window.location.port: '') }`;
window.location.host
var http = location.protocol;
var slashes = http.concat("//");
var host = slashes.concat(window.location.hostname);
एक नियमित अभिव्यक्ति (रेगेक्स) का उपयोग करने की कोशिश करें, जो सामान को मान्य / निकालने या यहां तक कि जावास्क्रिप्ट में कुछ सरल पार्सिंग करने के लिए काफी उपयोगी होगा।
रेगेक्स है:
/([a-zA-Z]+):\/\/([\-\w\.]+)(?:\:(\d{0,5}))?/
प्रदर्शन:
function breakURL(url){
matches = /([a-zA-Z]+):\/\/([\-\w\.]+)(?:\:(\d{0,5}))?/.exec(url);
foo = new Array();
if(matches){
for( i = 1; i < matches.length ; i++){ foo.push(matches[i]); }
}
return foo
}
url = "https://www.google.co.uk:55699/search?q=http%3A%2F%2F&oq=http%3A%2F%2F&aqs=chrome..69i57j69i60l3j69i65l2.2342j0j4&sourceid=chrome&ie=UTF-8"
breakURL(url); // [https, www.google.co.uk, 55699]
breakURL(); // []
breakURL("asf"); // []
breakURL("asd://"); // []
breakURL("asd://a"); // [asd, a, undefined]
अब आप वैधीकरण भी कर सकते हैं।
/**
* Get the current URL from `window` context object.
* Will return the fully qualified URL if neccessary:
* getCurrentBaseURL(true, false) // `http://localhost/` - `https://localhost:3000/`
* getCurrentBaseURL(true, true) // `http://www.example.com` - `https://www.example.com:8080`
* getCurrentBaseURL(false, true) // `www.example.com` - `localhost:3000`
*
* @param {boolean} [includeProtocol=true]
* @param {boolean} [removeTrailingSlash=false]
* @returns {string} The current base URL.
*/
export const getCurrentBaseURL = (includeProtocol = true, removeTrailingSlash = false) => {
if (!window || !window.location || !window.location.hostname || !window.location.protocol) {
console.error(
`The getCurrentBaseURL function must be called from a context in which window object exists. Yet, window is ${window}`,
[window, window.location, window.location.hostname, window.location.protocol],
)
throw new TypeError('Whole or part of window is not defined.')
}
const URL = `${includeProtocol ? `${window.location.protocol}//` : ''}${window.location.hostname}${
window.location.port ? `:${window.location.port}` : ''
}${removeTrailingSlash ? '' : '/'}`
// console.log(`The URL is ${URL}`)
return URL
}