জাভাস্ক্রিপ্টের সাথে বর্তমান ডোমেনের নাম পান (পথ নয়)


245

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

আমি এই জাতীয় জিনিসগুলির জন্য চারপাশে নজর রেখেছি তবে বেশিরভাগ ক্ষেত্রে এটি আমার ইচ্ছা মতো কাজ করে না।

যেমন ব্যবহার করার সময়

document.write(document.location)

উপর JSFiddle এটা ফেরৎ

http://fiddle.jshell.net/_display/

অর্থাত্ আসল পথ বা যা কিছু।


1
আমি নিশ্চিত নই আমি যদি বুঝতে ঠিক কি আপনি কি করতে চান, কিন্তু আপনি সম্ভবত মধ্যে কটাক্ষপাত করা উচিত MDN এই শুভেচ্ছা
MilkyWayJoe

কিছুটা বিষয়, তবে আপনি দুটি পৃথক ডোমেন নামের পরিবর্তে সাব-ডোমেন থাকার কথাও বিবেচনা করতে পারেন। এর মতো কিছু premium.random.comএবংfree.random.com
টি.চমলেভস্কিজ

উত্তর:


455

কেমন:

window.location.hostname

locationবস্তু আসলে একটি আছে গুণাবলীর সংখ্যা URL এর বিভিন্ন অংশ উল্লেখ


55
এবং window.location.hostnameআপনি যদি চান না port(যেমন http://localhost:3000/, window.location.host = 'localhost:3000'এবংwindow.location.hostname = 'localhost'
গিলহার্ম

6
উত্তরটি ভুল কারণ পোর্টটি ডোমেনের নয়। এবং window.location.hostমাঝে মাঝে বন্দরটি ফেরত দেবে।
আন্দ্রেজ

4
এটি সার্ভারের নামটিও ফেরত দেয় ('www.amazingjokes.com', পরিবর্তে কেবল '.amazingjokes.com')
প্যাট্রিক

আপনার যদি ডিএনএস ফরোয়ার্ড করা হয় তবে আপনার এটির প্রয়োজন হতে পারে - উইন্ডো.লোকেশন.অ্যান্টসোর অরগিনস
কিরিল গুসায়াতিন

125

স্ক্রিপ্টে চালানোর চেষ্টা করুন: পথ: http: // লোকালহোস্ট: 4200 / অবতরণ? ক্যোয়ারী = 1 # 2

console.log(window.location.hash)

অবস্থানের নিম্নলিখিত মান রয়েছে:

window.location.hash: "#2"

window.location.host: "localhost:4200"

window.location.hostname: "localhost"

window.location.href: "http://localhost:4200/landing?query=1#2"

window.location.origin: "http://localhost:4200"

window.location.pathname: "/landing"

window.location.port: "4200"

window.location.protocol: "http:"

window.location.search: "?query=1"

3
এটি এমন দুর্দান্ত উত্তর!
অ্যান্ড্রু ক্যাম্পবেল

2
আমি বেশ কয়েকটি উদাহরণ সহ উত্তরগুলি পছন্দ করি। তোমাকে অনেক অনেক ধন্যবাদ.
ম্যাগনো আলবার্তো

24

আপনি যদি হোস্টের নাম (উদাহরণস্বরূপ www.beta.example.com) তে আগ্রহী না হন তবে ডোমেন নেমে (উদাহরণস্বরূপ example.com), এটি বৈধ হোস্টের নামের জন্য কাজ করে:

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}

13
ভুল, এটি প্রায় সব আন্তর্জাতিক টিএলডি ভেঙ্গে যাবে।
tbranyen

4
@tbranyen আপনি কি উল্লেখ করছেন তা ব্যাখ্যা করতে পারেন? আমি কেবলমাত্র সাবডোমেনগুলির মতোই ভাবতে পারি amazon.co.uk। তবে অবশ্যই "প্রায় সব আন্তর্জাতিক টিএলডি" নয়। বাস্তবে এটি উইকিপিডিয়ায় পাওয়া দেশের
cprcrack

1
সিআরসি ক্র্যাক কোনও কারণে আমি ভেবেছিলাম আরও আন্তর্জাতিক (আমেরিকাতে) টিএলডিএসে একাধিক বিন্দু রয়েছে। সংশোধন করার জন্য ধন্যবাদ!
tbranyen

বেশ কয়েকটি দেশ যুক্তরাজ্যের সাথে একইভাবে কাজ করে: তারা দ্বিতীয় স্তরের ডোমেনগুলি স্থির করেছে এবং আপনি কেবলমাত্র তৃতীয় স্তরে ডোমেনগুলি নিবন্ধন করতে পারেন। সে সব দেশের একটি তালিকা উইকিপিডিয়ায় রয়েছে
গ্যারেথ

18
function getDomain(url, subdomain) {
    subdomain = subdomain || false;

    url = url.replace(/(https?:\/\/)?(www.)?/i, '');

    if (!subdomain) {
        url = url.split('.');

        url = url.slice(url.length - 2).join('.');
    }

    if (url.indexOf('/') !== -1) {
        return url.split('/')[0];
    }

    return url;
}

উদাহরণ

  • getDomain (' http://www.example.com '); // উদাহরণ.com
  • getDomain ( 'www.example.com'); // উদাহরণ.com
  • getDomain (' http://blog.example.com ', সত্য); // blog.example.com
  • getDomain (location.href); // ..

পূর্ববর্তী সংস্করণটি পূর্ণ ডোমেন পাচ্ছিল (সাবডোমেন সহ)। এখন এটি পছন্দের উপর নির্ভর করে সঠিক ডোমেন নির্ধারণ করে। যাতে কোনও দ্বিতীয় যুক্তি যখন সত্য হিসাবে সরবরাহ করা হয় তখন এটি সাবডোমেন অন্তর্ভুক্ত করবে, অন্যথায় এটি কেবল 'প্রধান ডোমেন' ফেরত দেয়


1
এটি উত্তর হওয়া উচিত, এটি এমনকি কার্যকর হয় localhost/test.phpএবং এটি সঠিক উত্তরও localhost
মোহাম্মদ আলবান্না

এটি সর্বোত্তম উত্তরও কারণ এটি আপনার বর্তমান পাসওয়ার্ডের কোনও ইউআরএল নিয়ে কাজ করে, কেবল বর্তমান উইন্ডো নয় oc অবস্থান
sohtimsso1970

আপনি যদি google.co.ukএটির জন্য এটি করেন তবে আপনি 'কো.উক' ফিরে পাবেন, যা সঠিক নয় ...
জেমস ডগলাস

হ্যাঁ. এটি একটি জটিল ব্যবসা। এমনকি আপনি যদি সাবডোমেনও খুব বেশি পেয়ে থাকেন তবে (যেমন: test.google.co.uk) ier আপনি যদি এই কাঁচা সংস্করণটি ব্যবহার করতে চান তবে কিছু গুরুতর সমন্বয় প্রয়োজন (সম্ভবত এই tlds এর জন্য একটি বিশেষ তালিকা যুক্ত করা)।
অ্যাডলাইনু

10

আপনি জাভাস্ক্রিপ্টে সহজে অবস্থান অবস্থান থেকে এটি পেতে পারেন:

উদাহরণস্বরূপ এই পৃষ্ঠার ইউআরএল হ'ল:

http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc

তারপরে আমরা অবস্থানের অবজেক্টের নীচের বৈশিষ্ট্যগুলি সহ সঠিক ডোমেনটি পেতে পারি:

location.host = "www.stackoverflow.com"
location.protocol= "http:"

আপনি সম্পূর্ণ ডোমেনটি এটি দিয়ে তৈরি করতে পারেন:

location.protocol + "//" + location.host

যা এই উদাহরণে ফিরে আসে http://www.stackoverflow.com

আমি এর সাথে যুক্ত করে আমরা সম্পূর্ণ ইউআরএল এবং অবস্থান অবজেক্টের অন্যান্য বৈশিষ্ট্য সহ পাথ পেতে পারি:

location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"    
location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"

7

আপনি যদি কেবলমাত্র ডোমেন নামের প্রতি আগ্রহী হন এবং সাবডোমেনটি উপেক্ষা করতে চান তবে আপনার এটির বাইরে hostএবং পার্স করা দরকার hostname

নিম্নলিখিত কোডটি এটি করে:

var firstDot = window.location.hostname.indexOf('.');
var tld = ".net";
var isSubdomain = firstDot < window.location.hostname.indexOf(tld);
var domain;

if (isSubdomain) {
    domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1);
}
else {
  domain = window.location.hostname;
}

http://jsfiddle.net/5U366/4/


কেন এটি jsFizz এর পরিবর্তে jShell ফেরত আসবে?
ফ্রিসনউ

2
@ এক্সান্দারলামকিন্স: এটি একটি আইফ্রেমে: jsfiddle.net/5U366 <-> fiddle.jshell.net/5U366/ শো
স্যাক্সিয়ের

7

যেহেতু এই প্রশ্ন ডোমেইন নাম, জন্য অনুরোধ না হোস্টনেম, একটি সঠিক উত্তরের হওয়া উচিত

window.location.hostname.split('.').slice(-2).join('.')

এটি www.example.com এর মতো হোস্ট নামের জন্যও কাজ করে।


1
এটি কাজ করে তবে ডোমেন.কম.উইক, ডোমেইন.কম.বিআর এর মতো ডোমেনগুলির সাথে কাজ করে না .. আমি কীভাবে এটি কোনও ডোমেনের সাথে কাজ করতে পারি?
সামেহ

6

ব্যবহার

document.write(document.location.hostname)​

window.locationগুচ্ছ সম্পত্তি আছে। তাদের একটি তালিকা জন্য এখানে দেখুন ।


5

আপনি যদি একটি সম্পূর্ণ ডোমেন উত্স চান, আপনি এটি ব্যবহার করতে পারেন:

document.location.origin

এবং আপনি যদি কেবল ডোমেন পেতে চান তবে আপনি কেবল এটি ব্যবহার করতে পারেন:

document.location.hostname

তবে আপনার অন্যান্য বিকল্প রয়েছে, এখানে বৈশিষ্ট্যগুলি দেখুন:

document.location

5

এই ফাংশন সম্পর্কে কি?

window.location.hostname.match(/\w*\.\w*$/gi)[0]

এটি কেবলমাত্র ডোমেন নামের সাথে মেলে যদি তা সাবডোমেন বা প্রধান ডোমেন নির্বিশেষে match


1
আমি এই উত্তর পছন্দ। তবে আপনার সচেতন হওয়া উচিত যে এটি যদি সুরক্ষা-সম্পর্কিত উদ্দেশ্যে ব্যবহার করা হয় .. এটি বাইপাস করা যেতে পারে। উদাহরণস্বরূপ, আপনি যদি নিশ্চিত করতে চান যে আপনি উদাহরণ.কম এ আছেন, তবে হ্যাকার-উদাহরণ.কম.ও 'উদাহরণ.com' হিসাবে সমান হবে। window.location.hostname.match (/ [a-zA-Z0-9 -] * \। [a-zA-Z0-9 -] * $ /) [0] কাজ করে।
hiburn8

4

আপনি যদি জাভাস্ক্রিপ্টে ডোমেনের নাম পেতে চান তবে কেবল নীচের কোডটি ব্যবহার করুন:

var domain_name = document.location.hostname;
alert(domain_name);

আপনার যদি ওয়েব পৃষ্ঠার ইউআরএল পাথের প্রয়োজন হয় তবে আপনি ওয়েব ইউআরএল পাথটি অ্যাক্সেস করতে পারেন এই উদাহরণটি ব্যবহার করুন:

var url = document.URL;
alert(url);


1

আমি জাভাস্ক্রিপ্টে নতুন, কিন্তু আপনি কেবল ব্যবহার করতে পারবেন না: ডকুমেন্ট.ডোমাইন ?

উদাহরণ:

<p id="ourdomain"></p>

<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>

আউটপুট:

domain.com

অথবা

www.domain.com

আপনি আপনার ওয়েবসাইটে যা ব্যবহার করেন তার উপর নির্ভর করে।



0

উপরের কয়েকটি উত্তর মিলিয়ে, কুকিগুলি ধ্বংস করার জন্য নিম্নলিখিতটি আমার পক্ষে সত্যিই ভাল কাজ করে:

  /**
   * Utility method to obtain the domain URI:
   */
  fetchDomainURI() {
    if (window.location.port.length > 0) {
      return window.location.hostname;
    }
    return `.${window.location.hostname.match(/\w*\.\w*$/gi)[0]}`;
  }

পোর্ট সহ আইপি ঠিকানার জন্য কাজ করে, যেমন, 0.0.0.0:8000 ইত্যাদি, সেইসাথে app.staging.example.comফেরত দেওয়ার মতো জটিল ডোমেনগুলি .example.com=> ক্রস-ডোমেন কুকি সেটিং এবং ধ্বংস করার অনুমতি দেয়।


0

আপনি যদি দেশের ডোমেন নামটি চান - উদাহরণস্বরূপ   স্ট্যাকওভারফ্লো ডট কম থেকে .com এক্সট্রাক্ট করতে  :

(ES6):

const getCountryDomainName = () => {
  let hostName = window.location.hostname;
  let lastDotIndex = hostName.lastIndexOf('.');
  let countryDomainName = hostName.substr(lastDotIndex+1, hostName.length);
  return countryDomainName;
}

(ES5):

function getCountryDomainName() {
  let hostName = window.location.hostname;
  let lastDotIndex = hostName.lastIndexOf('.');
  let countryDomainName = hostName.substr(lastDotIndex+1, hostName.length);
  return countryDomainName;
}

তারপরে, কেবল কোনও ভ্যারিকে মান নির্ধারণ করতে ফাংশনটি ব্যবহার করুন:

const countryDomainName = getCountryDomainName();

-2

@ ব্র্যান্ডিটো ধন্যবাদ, ভাল সেই সাইটটি একটি অ্যাডাব্লুএস ভার্চুয়াল হোস্টে হোস্ট করা হয়েছিল আমি বিশ্বাস করি যে ওয়ার্ডপ্রেসটি ব্যবহার করা হয়েছে এবং এটি কেন এটি করতে সমস্যা দিচ্ছিল তা আমি জানি না ... এটি ভুল পুননির্দেশনা ছিল বা এটির জন্য কিছু ছিল কিনা তা নিশ্চিত নয় ব্যাকএন্ড মোড পুনর্লিখনের নিয়মগুলি সহ .. প্লাস আমি এটির সাথে একটি jquery ui থিমযুক্ত সরঞ্জাম এবং আইকনটি ব্যবহার করতে চেয়েছিলাম। প্রথমে অবশ্যই ক্লায়েন্টের দ্বারা অনুমোদিত: '-)
জিন পল এ কেএ এল_ভেটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.