উত্তর:
প্রথমে বর্তমান ঠিকানাটি পান
var url = window.location.href
তারপরে কেবল সেই স্ট্রিংটিকে পার্স করুন
var arr = url.split("/");
আপনার ইউআরএল হ'ল:
var result = arr[0] + "//" + arr[2]
আশাকরি এটা সাহায্য করবে
location
বস্তুটি উপলভ্য নয় (ব্রাউজারের বাইরে
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 নয়।
আপনি URL টি API ব্যবহার করতে পারেন (আইই 11 দ্বারা সমর্থিত নয়, তবে অন্য কোথাও উপলব্ধ )।
এটি অনুসন্ধানের প্যারামগুলিতে অ্যাক্সেস করা সহজ করে তোলে । আরেকটি বোনাস: এটি কোনও ওয়েব কর্মী হিসাবে ব্যবহার করা যেতে পারে কারণ এটি ডোমের উপর নির্ভর করে না।
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:'
'? স্টার্ট ইন্ডেক্স = 1 এবং পৃষ্ঠা আকার = 10' যেহেতু নিজের নিজের থেকে খুব বেশি ব্যবহারযোগ্য নয়, আপনি সম্ভবত অনুসন্ধান ইউআরএল প্যারামগুলিও ছিন্ন করতে চান এমন সম্ভাবনা রয়েছে।
যদি আপনি উপরের পদ্ধতি 1 (URL এপিআই) ব্যবহার করেন তবে আপনি কেবল অনুসন্ধানপ্যারামগুলি পেতে পারেন:
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: '');
}
আমি আসলে কয়েক মাস আগে এই সম্পর্কে লিখেছিলাম উইন্ডো.লোকেশন.রিগিনের জন্য একটি স্থির
window.location.origin
যে বিদ্যমান। ধন্যবাদ. ^^
নিমন্ত্রণকর্তা
var url = window.location.host;
আয় localhost:2679
হোস্ট-নেম
var url = window.location.hostname;
আয় localhost
localhost/
পরিবর্তে কেন প্রদর্শিত হচ্ছে তা আমি বুঝতে পারি না localhost:3000
।
window.location.origin
একই পেতে যথেষ্ট হবে।
প্রোটোকল সম্পত্তি কর্নেল (:) সহ বর্তমান ইউআরএলের প্রোটোকল সেট করে বা প্রদান করে।
এর অর্থ হ'ল আপনি যদি কেবল এইচটিটিপি / এইচটিটিপিএস অংশ পেতে চান তবে আপনি এই জাতীয় কিছু করতে পারেন:
var protocol = window.location.protocol.replace(/:/g,'')
ডোমেনের জন্য আপনি ব্যবহার করতে পারেন:
var domain = window.location.hostname;
বন্দরের জন্য আপনি ব্যবহার করতে পারেন:
var port = window.location.port;
মনে রাখবেন যে ইউআরএলটিতে দৃশ্যমান না থাকলে পোর্টটি একটি খালি স্ট্রিং হবে। উদাহরণ স্বরূপ:
আপনার কোনও বন্দর ব্যবহার না থাকলে আপনার যদি 80/443 দেখানোর দরকার হয়
var port = window.location.port || (protocol === 'https' ? '443' : '80');
কেন ব্যবহার করবেন না:
let full = window.location.origin
প্রকৃতপক্ষে, উইন্ডো.লোকেশন.রিগিন ব্রাউজারগুলিতে মান অনুসরণ করে, তবে অনুমান করুন। 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
}