javascript - 仅从document.referrer获取域名

时间:2012-04-25 13:44:45

标签: javascript jquery

我想只从引荐来源网址获取域名。我主要得到的推荐人网址是http://www.davidj.com/pages/flyer.asp& http://www.ronniej.com/linkdes.com/?adv=267&loc=897

当我获得上述推荐人网址时,我只想获得域名示例:http://www.davidj.com

我尝试过使用.split方法,但我无法使用它。

7 个答案:

答案 0 :(得分:15)

var url = "http://www.ronniej.com/linkdes.com/?adv=267&loc=897"
var referrer =  url.match(/:\/\/(.[^/]+)/)[1];

http://jsfiddle.net/hyjcD/

if (document.referrer) {
   url = document.referrer; 
   ref = url.match(/:\/\/(.[^/]+)/)[1];
}

答案 1 :(得分:9)

你可以使用内部将url写入一个锚元素,然后从那个获取较小的部分

var anchor = document.createElement("a");
anchor.href = "http://www.davidj.com/pages/flyer.asp";

console.log(anchor.protocol + "//" + anchor.host); // "http://www.davidj.com"

它要容易得多,因为你不必关心拆分或类似的东西......这是非常合乎逻辑的...本机锚具有相同的属性,如window.location至少关于URL

编辑:IE 6-9将默认端口添加到anchor.host //“http://www.davidj.com:80

答案 2 :(得分:5)

链分割,切片和连接:

document.referrer.split("/").slice(0,3).join("/")

答案 3 :(得分:3)

尝试使用JS本机URL接口来处理URL字符串:

else

参考:https://developer.mozilla.org/en-US/docs/Web/API/URL

答案 4 :(得分:0)

您可以使用正则表达式:

var matchHost = /^https?:\/\/.*\//;

var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp');
if(match) {
    var host = match[0];
    console.log(host);
}

答案 5 :(得分:0)

if (document.referrer.split('/')[2] == "domain") {
    //................
}                              

答案 6 :(得分:0)

从引荐来源字符串获取协议+域的唯一答案是:

document.referrer.split("/").slice(0,3).join("/").split("?").slice(0,1).join("?")

如果存在查询字符串,则需要进行第二次拆分以删除查询字符串: http://www.example.com?s=search

它适用于:

  1. http:// ....
  2. https:// ....
  3. http://www.example.com
  4. http://www.example.com/
  5. http://www.example.com/aaa/bbb/ccc ....
  6. http://www.example.com?s=search&t=time
  7. http://www.example.com/?s=search&t=time