2012-07-09 7 views
117

मैं एक ही साइट के लिए दो डोमेन नाम खरीदने की योजना बना रहा हूं। किस डोमेन का उपयोग किया जाता है, इस पर निर्भर करता हूं कि मैं पृष्ठ पर थोड़ा अलग डेटा प्रदान करने की योजना बना रहा हूं। क्या मेरे पास वास्तविक डोमेन नाम का पता लगाने का कोई तरीका है जिससे पृष्ठ लोड हो रहा है ताकि मुझे पता चले कि मेरी सामग्री को किस प्रकार बदलना है?जावास्क्रिप्ट के साथ वर्तमान डोमेन नाम प्राप्त करें (पथ नहीं, आदि)

मैंने इस तरह की चीजों के लिए चारों ओर देखा है, लेकिन इसमें से अधिकांश इस तरह से काम नहीं करते हैं।

उदाहरण के लिए जब

document.write(document.location) 

का उपयोग कर JSFiddle पर यह रिटर्न

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

अर्थात वास्तविक पथ या जो कुछ भी करता है।

+1

मुझे यकीन नहीं है कि मैं समझता हूं कि आप वास्तव में क्या करना चाहते हैं, लेकिन आपको शायद [MDN] (https://developer.mozilla.org/en/DOM/window.location) में एक नज़र डालना चाहिए इस – MilkyWayJoe

+0

के संबंध में थोड़ा सा टॉपी सी, लेकिन आप उप डोमेन को दो अलग-अलग डोमेन नामों पर विचार करने पर भी विचार कर सकते हैं। 'Premium.random.com' और' free.random.com' –

उत्तर

257

के बारे में कैसे:

window.location.hostname 

location वस्तु वास्तव में एक number of attributes यूआरएल के विभिन्न भागों

+2

http://jsfiddle.net/5U366/ – FreeSnow

+28

और 'window.location.hostname' जैसे कुछ' अगर आप 'पोर्ट' नहीं प्राप्त करना चाहते हैं (जैसे 'http: // localhost: 3000/',' window.location.host =' localhost: 3000'' और 'window.location।hostname = 'localhost'' – Guilherme

+2

उत्तर गलत है क्योंकि पोर्ट डोमेन से संबंधित नहीं है। और 'window.location.host' कभी-कभी पोर्ट को वापस दे देगा। – Andrej

8

की चर्चा करते हुए उपयोग

document.write(document.location.hostname)​ 

window.location है गुण का एक समूह है। उनमें से एक सूची के लिए here देखें।

+1

http://jsfiddle.net/5U366/1/ – FreeSnow

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/

+0

यह jsFiddle के बजाय jShell क्यों लौटाता है? – FreeSnow

+2

@XanderLamkins: इसका एक आईफ्रेम: http://jsfiddle.net/5U366/ <-> http://fiddle.jshell.net/5U366/show/ – Saxoier

21

आप होस्ट नाम (उदाहरण के www.beta.example.com के लिए) में कोई दिलचस्पी नहीं कर रहे हैं, लेकिन डोमेन नाम में (उदाहरण के example.com के लिए), इस के लिए काम करता मान्य होस्ट नाम:

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

गलत, यह लगभग सभी अंतरराष्ट्रीय टीएलडी को तोड़ देगा। – tbranyen

+3

@tbranyen क्या आप समझा सकते हैं कि आप क्या कह रहे हैं? एकमात्र मामला जो मैं सोच सकता हूं वो सबडोमेन जैसे 'amazon.co.uk' हैं। लेकिन निश्चित रूप से "लगभग सभी अंतरराष्ट्रीय टीएलडी" नहीं। वास्तव में यह 100% [विकिपीडिया में पाए गए देश कोड] के साथ काम करता है (http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains) – cprcrack

+1

cprcrack किसी कारण से मैंने अधिक अंतरराष्ट्रीय सोचा (अमेरिका के लिए) tlds में कई बिंदु शामिल थे। सुधार करने के लिए धन्यवाद! – tbranyen

11
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; 
} 

उदाहरण

पिछला संस्करण पूर्ण डोमेन (सबडोमेन समेत) प्राप्त कर रहा था। अब यह वरीयता के आधार पर सही डोमेन निर्धारित करता है।तो यह है कि जब एक 2 तर्क सच के रूप में प्रदान की जाती है यह उप डोमेन शामिल होंगे, अन्यथा यह केवल 'मुख्य डोमेन'

+1

यह उत्तर होना चाहिए, यह 'localhost/test.php' में भी काम करता है और यह कि सही उत्तर 'localhost'। – Mohammad

+0

यह भी सबसे अच्छा जवाब है क्योंकि यह आपके द्वारा पास की गई किसी भी यूआरएल के साथ काम करता है, न केवल वर्तमान विंडो। स्थान – sohtimsso1970

3

रिटर्न आप एक पूर्ण डोमेन मूल चाहते हैं, तो आप इस का उपयोग कर सकते हैं:

document.location.origin 

और अगर आप केवल डोमेन प्राप्त करना चाहते हैं, का उपयोग करें तो आप सिर्फ यह कर सकते हैं:

document.location 
01:

document.location.hostname 

लेकिन आप अन्य विकल्प हैं, में गुण पर एक नज़र

5

के बाद से यह सवाल डोमेन नाम के लिए पूछता है, नहीं होस्ट नाम, एक सही जवाब

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

यह www.example.com भी तरह होस्ट नाम के लिए काम करता है होना चाहिए।

+0

यह काम करता है लेकिन डोमेन.को.यूके, domain.com.br जैसे डोमेन के साथ काम नहीं करता .. मैं कैसे कर सकता हूं इसे किसी भी डोमेन के साथ काम करते हैं? – Sameh

4

आप आसानी जावास्क्रिप्ट में स्थान वस्तु से प्राप्त कर सकते हैं:

इस पेज के उदाहरण यूआरएल के लिए है:

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:" 

आप के साथ पूर्ण डोमेन बना सकते हैं 10

इस उदाहरण में कौन सा रिटर्न http://www.stackoverflow.com

मैं इस के अलावा हम पूर्ण URL और भी स्थान वस्तु के अन्य गुणों के साथ पथ प्राप्त कर सकते हैं:

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" 
1

मैं इसे समझ के रूप में सरल होना चाहिए इस:

url.split("/")[2]

1

आप जावास्क्रिप्ट में डोमेन नाम पाने के लिए, बस नीचे दिए गए कोड का उपयोग करना चाहते हैं:

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

आप वेब पेज URL पथ की जरूरत है ताकि आप वेब URL पथ का उपयोग इस उदाहरण का उपयोग कर सकते हैं:

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

या आप see this guide

0
मेरे मामले के लिए

सबसे अच्छा मैच विंडो स्थान है सकते हैं .origin

संबंधित मुद्दे

 संबंधित मुद्दे