2010-08-05 119 views
55

我知道我可以獲取當前網頁的主機名,通過簡單地做:如何使用JavaScript獲取引用者的域/主機名?

var myhostname = location.hostname; 

但我怎麼得到引用的主機名?我可以通過

var referrer = document.referrer; 

,但不幸的是,沒有可用於JavaScript的document.referrer.hostname。我怎樣才能得到這個價值?

如果有人點擊google.com上的鏈接,此功能很有用的示例。我希望能夠從referrer中檢索google.com(不是頁面和查詢字符串)。

回答

25

解析它。 document.referrer.split('/');會讓你關閉。或在此

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

看看如果引薦來源瀏覽器的到來,這將是明智的 - 只是如果你想更強大的解析。

+1

謝謝。簡單的解析工作正常。 – Keltex 2010-08-06 00:31:55

+3

如果你不想重新發明解析輪:用'var a = document.createElement('a')'創建一個錨元素,然後設置'a.href = document.referrer',然後簡單地讀出'a.hostname.'或者,甚至更簡單(如果您正在使用NPM),請使用[ulocation](https://npmjs.com/package/ulocation):'npm install -S ulocation','var Location = require( 'ulocation')'並使用'Location(document.referrer).hostname'。 *免責聲明:我是該包的作者* – 2017-01-25 21:20:04

44

這會做:

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

Example.

+0

優雅,謝謝:-) – Marcin 2013-02-07 18:43:24

+0

分裂在/沒有爲我工作。出於某種原因,我不得不在逗號分割。它的工作原理,但不知道這可能是因爲自2010年以來的變化。 – 2014-06-17 16:41:19

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

這是一個比較老的問題,不過這可能會幫助任何追隨者。

+5

這是正確的答案。 – YPCrumble 2014-02-17 08:29:27

+0

另請參閱:http://tutorialzine.com/2013/07/quick-tip-parse-urls/ – YPCrumble 2014-02-17 08:48:20

+3

美麗的內置瀏覽器功能使用 – alexreardon 2015-03-17 23:45:08

1

您可以使用regexp來提取這些數據。

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

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將工作。它通過Origin頭部工作,Origin頭部沒有包含路徑信息。

相關問題