Javascript 基于地址栏中的当前URL在HTML中定义活动链接的防错方法

Javascript 基于地址栏中的当前URL在HTML中定义活动链接的防错方法,javascript,regex,url,href,Javascript,Regex,Url,Href,HTML中的链接可能是绝对路径,也可能是相对路径 它可能有查询参数,也可能没有 它可能有一个散列或没有 当前URL同样可以是/有任何内容 是否有一种安全/防错的JS方法通过将HTML中的链接与当前URL进行比较来检查该链接是否为活动链接 我假设必须在URL上使用一些正则表达式,在地址栏URL上使用另一个正则表达式,并对两者进行比较,但是否有一种已知/标准的方法可以成功实现这一点 在我真正开始尝试解决方案之前,我想检查一下是否已经知道这是注定要失败的:D 谢谢 是否有一种安全/防错的JS方法通过将

HTML中的链接可能是绝对路径,也可能是相对路径 它可能有查询参数,也可能没有 它可能有一个散列或没有

当前URL同样可以是/有任何内容

是否有一种安全/防错的JS方法通过将HTML中的链接与当前URL进行比较来检查该链接是否为活动链接

我假设必须在URL上使用一些正则表达式,在地址栏URL上使用另一个正则表达式,并对两者进行比较,但是否有一种已知/标准的方法可以成功实现这一点

在我真正开始尝试解决方案之前,我想检查一下是否已经知道这是注定要失败的:D

谢谢

是否有一种安全/防错的JS方法通过将HTML中的链接与当前URL进行比较来检查该链接是否为活动链接

这取决于您是否要考虑查询参数和/或哈希。< /P> 相对/绝对值不是问题,请使用's href属性not属性,该属性将被解析为绝对值。或者使用锚元素的各个单独部分协议、主机等。。锚元素包括:

请记住,查询参数顺序可能很重要。这通常并不重要,在这种情况下,对于类似的URL,如http://example.com?foo=a&bar=b 和http://example.com?bar=b&foo=a 如果,对于该资源,foo和bar的相对顺序并不重要。在这种情况下,您必须解析查询参数并进行比较,以便考虑资源关于何时何地排序的规则。例如,在大多数情况下,“foo=1&foo=2&bar=x”和“foo=2&foo=1&bar=x”不是一回事,但“foo=1&foo=2&bar=x”和“bar=x&foo=1&foo=2”和“foo=1&bar=x&foo=2”是一回事。但同样,这是特定于资源的

如果不是,你需要挑选你认为相同的部分并比较它们。位置支持各个部分,如锚元素do协议、主机等

interface mixin HTMLHyperlinkElementUtils { [CEReactions] stringifier attribute USVString href; readonly attribute USVString origin; [CEReactions] attribute USVString protocol; [CEReactions] attribute USVString username; [CEReactions] attribute USVString password; [CEReactions] attribute USVString host; [CEReactions] attribute USVString hostname; [CEReactions] attribute USVString port; [CEReactions] attribute USVString pathname; [CEReactions] attribute USVString search; [CEReactions] attribute USVString hash; };
if (link.href === location.href)