javascript-仅从document.referer获取域
我只想从推荐人的URL中获取域名。我最常得到的推荐URL是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写入锚元素,并从
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("?")