我只想从引用网址中获取域名。我最常得到的引荐网址是
http://www.davidj.com/pages/flyer.asp
和 http://www.ronniej.com/linkdes.com/?adv=267&loc=897
当我得到像上面这样的引用网址时,我只想获取域示例:http://www.davidj.com
我尝试过使用 .split 方法,但我在使用它时遇到问题。
var url = "http://www.ronniej.com/linkdes.com/?adv=267&loc=897"
var referrer = url.match(/:\/\/(.[^/]+)/)[1];
if (document.referrer) {
url = document.referrer;
ref = url.match(/:\/\/(.[^/]+)/)[1];
}
尝试使用 JS 原生 URL 接口来处理 URL 字符串:
let domain = (new URL(document.referrer)).hostname;
console.log(domain);
您可以在内部将 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
链分割、切片和连接:
document.referrer.split("/").slice(0,3).join("/")
您可以使用正则表达式:
var matchHost = /^https?:\/\/.*\//;
var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp');
if(match) {
var host = match[0];
console.log(host);
}
if (document.referrer.split('/')[2] == "domain") {
//................
}
从引用字符串获取协议+域的唯一答案是:
document.referrer.split("/").slice(0,3).join("/").split("?").slice(0,1).join("?")
需要第二次拆分来删除查询字符串(如果存在):http://www.example.com?s=search
它将适用于: