2010-08-05 12 views
55

मैं जानता हूँ कि मैं बस करने से, वर्तमान पृष्ठ का होस्ट नाम प्राप्त कर सकते हैं:जावास्क्रिप्ट का उपयोग कर रेफरर का डोमेन/होस्ट नाम कैसे प्राप्त करूं?

var myhostname = location.hostname; 

लेकिन यह कैसे मैं संदर्भदाता के होस्ट नाम मिलता है? मैं द्वारा

var referrer = document.referrer; 

रेफरर प्राप्त कर सकते हैं लेकिन दुर्भाग्य से वहाँ कोई document.referrer.hostname जावास्क्रिप्ट में उपलब्ध है। मैं यह मूल्य कैसे प्राप्त कर सकता हूं?

यह उपयोगी है कि यह कहां उपयोगी है अगर कोई google.com पर एक लिंक पर क्लिक करता है। मैं रेफरर से google.com पुनर्प्राप्त करने में सक्षम होना चाहता हूं (पृष्ठ और क्वेरी स्ट्रिंग नहीं)।

उत्तर

25

इसे पार्स करके। document.referrer.split('/'); आपको बंद कर देगा। या यह

http://blog.stevenlevithan.com/archives/parseuri

पर एक नज़र डालें रेफरर एक ब्राउज़र से आ रही है, तो यह समझदार हो जाएगा - लेकिन सिर्फ मामले में आप और अधिक मजबूत पार्स चाहते हैं।

+1

धन्यवाद। सरल पार्सिंग ठीक काम करता है। – Keltex

+3

यदि आप पार्सिंग व्हील का पुन: आविष्कार नहीं करना चाहते हैं: 'var a = document.createElement ('a') 'एंकर तत्व बनाएं, फिर' a.href = document.referrer' सेट करें और फिर बस पढ़ें 'a.hostname.' या, सरल (यदि आप एनपीएम का उपयोग कर रहे हैं), [ulocation] (https://npmjs.com/package/ulocation) का उपयोग करें:' npm install -S ulocation', 'var location = requ ('ulocation') 'और' स्थान (document.referrer) .ostname' का उपयोग करें। * अस्वीकरण: मैं उस पैकेज के लेखक हूं * –

44

यह करना होगा:

document.referrer.split('/')[2]; 

Example.

+0

सुरुचिपूर्ण, धन्यवाद :-) – Marcin

+0

विभाजन/मेरे लिए काम नहीं किया। मुझे किसी कारण से अल्पविराम पर विभाजित करना पड़ा। यह काम करता है, लेकिन यह सुनिश्चित नहीं है कि यह 2010 से परिवर्तनों के कारण हो सकता है। –

32
function parseURL(url) { 
    var a=document.createElement('a'); 
    a.href=url; 
    return a.hostname; 
} 

यह एक अपेक्षाकृत पुराने सवाल यह है कि फिर भी यह किसी भी अनुयायियों मदद मिल सकती है।

+5

यह सही उत्तर है। – YPCrumble

+0

यह भी देखें: http://tutorialzine.com/2013/07/quick-tip-parse-urls/ – YPCrumble

+3

इनबिल्ट ब्राउज़र क्षमताओं का सुंदर उपयोग – alexreardon

1

आप इस डेटा को निकालने के लिए regexp का उपयोग कर सकते हैं।

string.match(/^http([s]?)://([a-zA-Z0-9-_\.]+)(:[0-9]+)?/);

9

आप var referrer = new URL(document.referrer).hostname उपयोग कर सकते हैं।

https://developer.mozilla.org/en-US/docs/Web/API/URL.URL देखें।

+6

बहुत साफ है लेकिन ध्यान रखें कि यह वर्तमान में IE में समर्थित नहीं है https://developer.mozilla.org/en-US/docs/Web/API/URL.URL#Browser_compatibility – Robb

0

हाय डोमेन नाम प्राप्त करने के लिए इस फ़ंक्शन का उपयोग करें।

function getDomain(url) { 
    if (url) { 
     var match = /(?:https?:\/\/)?(?:\w+:\/)?[^:?#\/\s]*?([^.\s]+\.(?:[a-z]{2,}|co\.uk|org\.uk|ac\.uk|org\.au|com\.au))(?:[:?#\/]|$)/gi 
       .exec(url); 
     return match ? match[1] : null; 
    } else 
     return null; 
} 
1

इसमें प्रोटोकॉल शामिल है, लेकिन document.origin काम करेगा। यह मूल हेडर के माध्यम से काम करता है, जिसमें इसके साथ कोई पथ जानकारी शामिल नहीं है।

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

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