জাভাস্ক্রিপ্টে কোনও ইউআরএলের হোস্টনাম অংশটি কীভাবে সরিয়ে নেওয়া যায়


379

কোনও পূর্ণ ইউআরএল থেকে শুরু করার সত্যিই সহজ উপায় কি:

document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"

এবং কেবল হোস্ট অংশটি বের করুন:

aaa.bbb.ccc.com

একটি জাভাস্ক্রিপ্ট ফাংশন থাকতে হবে যা এটি নির্ভরযোগ্যভাবে করে তবে আমি এটি খুঁজে পাচ্ছি না।

উত্তর:


826

যে অনুমান এই ঠিকানায় মাধ্যমে একটি পৃষ্ঠায় আছে: http://sub.domain.com/virtualPath/page.htm। ফলাফলগুলি অর্জনে পৃষ্ঠা কোডে নিম্নলিখিতটি ব্যবহার করুন:

  • window.location.host: আপনি পাবেন sub.domain.com:8080বাsub.domain.com:80
  • window.location.hostname : তুমি পাবে sub.domain.com
  • window.location.protocol : তুমি পাবে http:
  • window.location.port: আপনি পাবেন 8080বা80
  • window.location.pathname : তুমি পাবে /virtualPath
  • window.location.origin: আপনি পাবেন http://sub.domain.com*****

আপডেট: .origin সম্পর্কে

***** রেফের বক্তব্য অনুসারে, ব্রাউজারের সামঞ্জস্যতা window.location.originপরিষ্কার নয়। আমি এটি ক্রোমে পরীক্ষা করে দেখেছি এবং http://sub.domain.com:portবন্দরটি ৮০ ছাড়া আর কিছু বন্দর থাকলে ফিরে আসবে http://sub.domain.com

আমাকে তা উল্লেখ করার জন্য @ টোরাজাবুরোকে বিশেষ ধন্যবাদ।


আইআইএসে আমার একটি ওয়েবসাইট এবং 2 টি অ্যাপ্লিকেশন রয়েছে। উদাহরণস্বরূপ: sub.domain.com/v1 এবং sub.domain.com/v2 এবং sub.domain.com/v1/Default.aspx বা sub.domain.com/v2/Products/Default.aspx ইত্যাদির মতো পৃষ্ঠাগুলি কীভাবে আমি আমার অ্যাপ্লিকেশনটির জন্য মূল / ভি 2 , মূলটি পেতে পারেন sub.domain.com/v2 ?
কিকিনেট

@ কিউকিনেট ওয়েবস্টর্মের মতো একটি জাভাস্ক্রিপ্ট আইডিই ব্যবহার করে, আপনি কোড লেখার সাথে সাথে সম্ভাব্য বিকল্পগুলি দেখতে পাবেন।
ভার্গব নানেকালভা

3
window.location.originআইই 9-এ অপরিবর্তিত রয়েছে (লিঙ্ক অনুসারে এটি আই 11+ +)। এই উত্তর সাহায্য করেছে।
নিওলিস্ক

1
স্পষ্টতই প্রায় সকলের জন্য সহায়ক ব্যতীত এটি ইউআরএল থেকে হোস্ট অংশটি কীভাবে বের করতে হয় সে প্রশ্নের উত্তর দেয় না। GetRootUll ফাংশন সহ সঠিক উত্তরটি মজাদার হ'ল কেবল 17 বনাম 609 ভোট রয়েছে।
মিরো

@ মিরো প্রশ্নের উত্তর দেওয়া হয়েছে এটি নয়, ২ য় বুলেট পয়েন্টটি প্রশ্নের উত্তর দিয়েছে: উইন্ডো.লোকেশন.হোস্টনাম: আপনি sub.domain.com পাবেন
পল

155

আপনি অবস্থানের প্রোটোকল এবং হোস্টকে একত্রিত করতে পারেন:

var root = location.protocol + '//' + location.host;

একটি ইউআরএল জন্য, বলুন 'http://stackoverflow.com/questions', এটি ফিরে আসবে'http://stackoverflow.com'


5
দেখে মনে হচ্ছে উপরোক্ত ফলাফলগুলি অর্জন করার জন্য আপনার "হোস্ট" এর পরিবর্তে "হোস্টনাম" ব্যবহার করা উচিত। উৎস: stackoverflow.com/questions/6725890/...
user417669

আপনি একই ফলাফলের সাথে অবস্থান.অরিগিন ব্যবহার করতে পারেন।
সেরজিও

1
মূল প্রশ্নটি ইউআরএল এর প্রোটোকল অংশ জিজ্ঞাসা করে না।
সাইমন পূর্ব

36

document.locationঅবজেক্ট এবং তার hostবা hostnameবৈশিষ্ট্যগুলি ব্যবহার করুন ।

alert(document.location.hostname); // alerts "stackoverflow.com"

29

গৃহীত উত্তরটি আমার পক্ষে কার্যকর হয়নি যেহেতু কেবল বর্তমান পৃষ্ঠার ইউআরএল নয়, কোনও সালিশী ইউআরএল নিয়ে কাজ করতে সক্ষম হতে চেয়েছিলেন।

URLঅবজেক্টটি একবার দেখুন :

var url = new URL("http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah");
url.protocol;  // "http:"
url.hostname;  // "aaa.bbb.ccc.com"
url.pathname;  // "/asdf/asdf/sadf.aspx"
url.search;    // "?blah"

1
ধন্যবাদ. কয়েক ঘন্টা ধরে আমি এপিআই থেকে যে ইউআরএল পাচ্ছি তা বের করার জন্য আমি পদ্ধতিটি অনুসন্ধান করে চলেছি। এটা খুব সহজ ছিল। আমি এটি কেবলমাত্র নতুন ইউআরএল দিয়ে url এ পড়েছি। ধন্যবাদ.
নদিরাবেগিমক্সোনয়িম

1
+99999999999999
এডিজেঙ্কস

এখানে দুটি উত্তরগুলির মধ্যে একটি যা আপনাকে ব্রাউজারের পক্ষে মনে করে না ...
উইল59

আইই ১১ এ কাজ করে না :(
তেওমন শিপাহি

24

দুটি উপায় আছে। প্রথমটি এখানে অন্য উত্তরের একটি বৈকল্পিক, তবে এটি একটি ডিফল্ট পোর্টের জন্য অ্যাকাউন্টগুলি:

function getRootUrl() {
  var defaultPorts = {"http:":80,"https:":443};

  return window.location.protocol + "//" + window.location.hostname
   + (((window.location.port)
    && (window.location.port != defaultPorts[window.location.protocol]))
    ? (":"+window.location.port) : "");
}

তবে আমি এই সহজ পদ্ধতিটি পছন্দ করি (যা কোনও ইউআরআই স্ট্রিংয়ের সাথে কাজ করে):

function getRootUrl(url) {
  return url.toString().replace(/^(.*\/\/[^\/?#]*).*$/,"$1");
}

3
ধন্যবাদ! আমি 2 য় পদ্ধতি আরও ভাল পছন্দ! বিশেষত যখন সার্ভার সাইড জাভাস্ক্রিপ্টে থাকে, উইন্ডো.লোকশন পাওয়ার কোনও উপায় নেই :)
ট্রিলিয়নস

এখানে দুটি উত্তরগুলির মধ্যে একটি যা আপনাকে ব্রাউজারের পক্ষে মনে করে না ... তবে নতুন ইউআরএল ব্যবহার করে মার্টিন কনেকেনি থেকে আরও সাম্প্রতিক উত্তরটি দেখুন।
উইল 59 :12



3

আমি ব্যবহার করি এমন আর একটি হ্যাক রয়েছে যা কোনও স্ট্যাকওভারফ্লো প্রতিক্রিয়াতে দেখেনি: কোনও চিত্রের "src" বৈশিষ্ট্যটি ব্যবহার করা আপনার সাইটের সম্পূর্ণ ভিত্তি অর্জন করবে। এই ক্ষেত্রে :

var dummy = new Image;
dummy.src = '$';                  // using '' will fail on some browsers
var root = dummy.src.slice(0,-1); // remove trailing '$'

মত URL এ http://domain.com/somesite/index.html, rootসেট করা হবে http://domain.com/somesite/। এটি লোকালহোস্ট বা কোনও বৈধ বেস URL এর জন্যও কাজ করে।

মনে রাখবেন যে এটি $ডামি চিত্রটিতে একটি ব্যর্থ এইচটিটিপি অনুরোধের কারণ ঘটবে । আপনি এটিকে এড়াতে পরিবর্তে একটি বিদ্যমান চিত্র ব্যবহার করতে পারেন, কেবলমাত্র সামান্য কোড পরিবর্তন করা।

অন্য রূপটি একটি ডামি লিঙ্ক ব্যবহার করে, এইচটিটিপি অনুরোধের কোনও পার্শ্ব প্রতিক্রিয়া ছাড়াই:

var dummy = document.createElement ('a');
dummy.href = '';
var root = dummy.href;

যদিও আমি প্রতিটি ব্রাউজারে এটি পরীক্ষা করি নি।


3

এটা যাচাই কর:

alert(window.location.hostname);

এটি হোস্টের নাম হিসাবে ফিরে আসবে www.domain.com

এবং:

window.location.host

মত ডোমেন নাম পোর্ট মত ফিরে আসবে www.example.com:80

সম্পূর্ণ রেফারেন্সের জন্য মোজিলা বিকাশকারী সাইট পরীক্ষা করুন ।


2

আমি কিছু নির্দিষ্ট করতে চাই আমার প্রয়োজন মতো পথের সাথে যদি কেউ পুরো url পেতে চান তবে ব্যবহার করতে পারেন:

var fullUrl = window.location.protocol + "//" + window.location.hostname + window.location.pathname;

কেন আরও দীর্ঘ পথ। এটি var fullUrl = window.location.origin + window.location.pathname- এর সাথে পাওয়া যাবে
অনন্ত

তবে কখনও কখনও আপনি প্রোটোকল এবং হোস্টনাম যেমন
বহু ভাষা

2

আমি জানি যে এটি কিছুটা দেরি হয়ে গেছে, তবে আমি একটি সামান্য ES6 সিনট্যাক্স দিয়ে একটি পরিষ্কার ছোট ফাংশন করেছি

function getHost(href){
  return Object.assign(document.createElement('a'), { href }).host;
}

এটি ইএস 5-তেও লিখিত হতে পারে

function getHost(href){
  return Object.assign(document.createElement('a'), { href: href }).host;
}

অবশ্যই IE সমর্থন করে না Object.assign, তবে আমার কাজের লাইনে, এটি কোনও ব্যাপার নয়।


1

রেজেক্স আরও অনেক নমনীয়তা সরবরাহ করে।

    //document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah
    //1.
     var r = new RegExp(/http:\/\/[^/]+/);
     var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com

    //2. 
     var r = new RegExp(/http:\/\/[^/]+\/[^/]+/);
     var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com/asdf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.