如何使用document.referrer获取URL的部分?

4

我需要使用document.referrer来获取之前的URL,同时还需要能够获取URL的各个部分,比如:

window.location.protocol
window.location.host
window.location.pathname

但是我无法弄清如何使用document.referrer实现它。 有人有什么想法吗?


window.location 是一个对象,具有方便实用的方法来获取不同的部分。另一方面,document.referrer 是一个字符串,因此需要手动解析。 - ultranaut
3个回答

13

您可以使用引用者作为其url创建一个a元素。

a元素(带有href的)可以像位置对象一样运行

var a=document.createElement('a');
a.href=document.referrer;
alert([a.protocol,a.host,a.pathname].join('\n'));
a='';

6

关于document.referrer,没有与window.location等价的方法,因此您唯一的选择是分解字符串本身。您可以编写一个正则表达式来实现这一点,或者依靠一系列字符串拆分:

var parts = document.referrer.split('://')[1].split('/');
var protocol = document.referrer.split('://')[0];
var host = parts[0];
var pathName = parts.slice(1).join('/');

1
根据RFC 3986,http://example.com/://foobar是一个有效的URI。你的“parts”可能缺少了一些东西... - rodneyrehm

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接