在缺少尾部斜杠/的页面中构建相对URL

迫害

我们迫切需要帮助来编写一个小的代码,该代码使您可以获取当前页面的URL和href =“ parm”中的参数,并通过使用斜杠将两者结合在一起来创建链接。

我们需要这样做的原因是,我们需要指向当前页面的相对链接。我们正在使用的CMS系统会删除网址末尾的斜杠。

这是一个问题,因为如果您位于页面domain.com/fruit/apple

并创建一个链接,例如href =“ calories”或href =“ ./ calories”,它将指向domain.com/fruit/calories

相反,我们希望它指向domain.com/fruit/apple/calories

相对于当前页面。

我们不想更改CMS的工作方式,因此不需要JS解决方案。

在下面,您可以看到一个我们要完成的示例,但这仅适用于一个链接。

<a href="home" id="relurl" target="_blank" title="This is a relative link!">link</a>

启动JS

var x = window.location.href; // Current page URL
var link = document.getElementById("relurl"); // store the element
var curHref = link.getAttribute('href'); // Get HREF paramter
link.setAttribute('href', x + "/"+ curHref);

结束JS

这个想法是每次使用id =“ relurl”的链接时都建立相对链接。

按照前面的示例,此链接:a href =“ home” id =“ relurl” target =“ _ blank” title =“这是一个相对链接!”>链接

在此页面上:domain.com/fruit/apple

它应该指向domain.com/fruit/apple/home

表示链接结构是currentpageURL ++ // href

一页可能有多个相对链接。

谢谢你的帮助。

黑曜石时代

虽然您可以在链接中使用相对URL(带有href="./page"),但这听起来像是问题在于您使用重复的ID(导致无效的标记)。您可以使用W3C标记验证服务来测试您是否具有有效的标记

当您有重复的ID时,JavaScript仅适用于第一个元素。可以在以下内容中看到:

var x = window.location.href; // Current page URL
var link = document.getElementById("relurl"); // store the element
var curHref = link.getAttribute('href'); // Get HREF paramter
link.setAttribute('href', x + "/" + curHref);
<a href="home" id="relurl" target="_blank" title="This is a relative link!">Working Link</a>
<br />
<a href="home" id="relurl" target="_blank" title="This is a relative link!">NOT Working</a>

若要解决此问题,您应该为链接使用类而不是ID。然后,您可以使用document.getElementsByClassName来选择元素。请记住,这将返回一个NodeList元素集合,因此您需要在循环内设置新的URL,如下所示:

var x = window.location.href; // Current page URL
var links = document.getElementsByClassName("relurl"); // store the elements
for (var i = 0; i < links.length; i++) {
  var curHref = links[i].getAttribute('href'); // Get HREF paramter
  links[i].setAttribute('href', x + "/" + curHref);
}
<a href="home" class="relurl" target="_blank" title="This is a relative link!">Working Link</a>
<br />
<a href="home" class="relurl" target="_blank" title="This is a relative link!">Another Working Link</a>

希望这可以帮助!:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

删除 URL 中的尾部斜杠

Apache .htaccess:如何在URL中添加缺少的尾部斜杠,但忽略文件和特殊URL?

发送POST请求:URL中缺少尾部斜杠会触发重定向GET请求

如何从 nginx 中的 url 中删除尾部斜杠?

Spring Security,URL中的尾部斜杠和点

如何在React-Router URL中删除尾部斜杠

Flask未检测到URL中的尾部反斜杠

Flask路径中的尾部斜杠

从Java中的相对URL构建绝对URL

在 Nginx 中重定向到新页面时如何删除尾部斜杠

htaccess:从URL添加/删除尾部斜杠

从所有URL删除尾部斜杠

将列表中的 URL 格式化为在 python 中都有一个尾部斜杠

如何在 angular 7 的 URL 中添加尾部斜杠而刷新时没有 404 问题?

删除bash中多个参数的尾部斜杠

删除主页网址中的尾部斜杠

删除字符串中的尾部斜杠

使用 .htaccess 删除特定页面的尾部斜杠

用于删除多个尾部斜杠的 Cloudflare 页面规则

Python:添加尾部斜杠时出现URL解析问题

当 URL 包含尾部斜杠时 Yii1 错误的路由

RESTful URI 尾部斜杠或无尾部斜杠

从Drupal 6中的站点域名中删除尾部斜杠

如何仅将特定自定义帖子类型的URL从尾部斜杠重定向到非尾部斜杠?

在目录符号链接的bash完成中添加尾部斜杠

关于Nginx中的尾部斜杠行为有些困惑

在Spring Boot应用程序中未插入尾部斜杠

Flask路径规则中的尾部斜杠触发器404

在某些情况下忽略Nginx中的尾部斜杠