javascript-仅从document.referer获取域

javascript-仅从document.referer获取域,javascript,jquery,Javascript,Jquery,我只想从推荐人的URL中获取域名。我最常得到的推荐URL是http://www.davidj.com/pages/flyer.asp&http://www.ronniej.com/linkdes.com/?adv=267&loc=897 当我获得如上所示的参考URL时,我只想获得域示例: 我已尝试使用.split方法,但在使用时遇到问题。链拆分、切片和连接: document.referrer.split("/").slice(0,3).join("/") 您可以在内部将url写入锚元素,并从

我只想从推荐人的URL中获取域名。我最常得到的推荐URL是
http://www.davidj.com/pages/flyer.asp
&
http://www.ronniej.com/linkdes.com/?adv=267&loc=897

当我获得如上所示的参考URL时,我只想获得域示例:


我已尝试使用.split方法,但在使用时遇到问题。

链拆分、切片和连接:

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

您可以在内部将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

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

您可以使用正则表达式:

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

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

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

let domain = (new URL(document.referrer)).hostname;

参考资料:

从参考资料字符串获取协议+域的唯一答案是:

document.referrer.split("/").slice(0,3).join("/").split("?").slice(0,1).join("?") document.referer.split(“/”).slice(0,3).join(“/”).split(“?”).slice(0,1).join(“?”) 如果存在查询字符串,则需要第二次拆分来删除:

它将用于:

  • http://....
  • https://....

  • @Reminson对此表示感谢。它可以工作,但我有一个问题。我已使用.js文件将代码放在我的域中,基本上它正在加载到所有页面上。唯一的问题是。每当我直接访问页面(没有参考url)时,我会收到以下错误消息:url.match(/:\/\/(.^/]+)/[1];是否为空我使用的是:var url=unescape(document.referer);var ref=url.match(/:\/\/([^/]+)/)[1];这是因为
    document.referer
    未定义的
    并且没有要匹配的url,您应该检查“如果(document.referer)”不是“未定义的”然后执行此代码。仅此解决方案:IE似乎将端口添加到
    锚定.host
    ,但不添加到
    位置.host
    。如果不需要端口,可以使用
    anchor.hostname
    location.hostname
    。我认为这是最好的答案。与
    file:///home/user/desktop/page.html
    @user5994461-当谈到本地url时,我不确定什么是“域”,这样的url没有域
    let domain = (new URL(document.referrer)).hostname;
    
    document.referrer.split("/").slice(0,3).join("/").split("?").slice(0,1).join("?")