如何在JavaScript中获取当前URL的目录部分?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaScript中获取当前URL的目录部分?相关的知识,希望对你有一定的参考价值。

我正在尝试在网页顶部添加“返回目录”按钮,该按钮会将用户重定向到相同的网址,但其中没有文件名。

例如,在查看URL时单击该按钮

http://example.com/somedir/button.html

将你重定向到

http://example.com/somedir/

所以我创建了以下代码:

<html>
<body>

<input type="button"
value="back to dir"
onclick="top.location=document.URL.replace(/[^\]*$/, '')">

</body>
</html>

但我错过了正确的代码,这将从document.URL中的当前URL中删除文件名

请问有人有好主意吗?

这是JSFiddle链接:http://jsfiddle.net/afarber/PERBY/

而且我不想一次使用jQuery。

答案

试试这个document.URL.substr(0,document.URL.lastIndexOf('/'))

它肯定会起作用!

另一答案

这个单线也有效:

document.URL.split('/').slice(0, -1).join('/')
另一答案
/* to avoid query parameters, use pathname instead of href */
var l = document.location.pathname.split('/');
l.pop();
console.log(document.location.origin + l.join('/'));
另一答案

以下获取目录,包括最后一个字符是斜杠的情况。

document.URL.replace(//[^/]+/?$/, '');

这有效地说明了以下内容(假设它们可以按此顺序找到)

  1. /:找一个“/”
  2. [^/]+:找到一个或多个不是“/”的字符
  3. /?:在这些角色后找到一个可选的“/”
  4. $:找到字符串的结尾

然后通过''删除它们,所以我们只留下目录。

同样,这假设存在标记目录的斜杠,并且这不仅仅是唯一斜杠在http://内的URL。

另一答案

请尝试以下操作,其中考虑了URL以尾部斜杠结束时和何时不结束时:

var currUrl = document.URL,
    newUrl;
if (currUrl.charAt(currUrl.length - 1) === '/') {
    newUrl = currUrl.slice(0, currUrl.lastIndexOf('/'));
    newUrl = newUrl.slice(0, newUrl.lastIndexOf('/')) + '/';
} else {
    newUrl = currUrl.slice(0, currUrl.lastIndexOf('/')) + '/';
}
console.log(newUrl);

以上是关于如何在JavaScript中获取当前URL的目录部分?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript获取当前url根目录(路径)

如何使用 php 或 javascript 获取所有浏览器中当前打开的选项卡的 url?

前端使用js如何准确获取当前页面url网址信息

使用 JavaScript 获取当前 URL?

使用 JavaScript 获取当前 URL?

使用 JavaScript 获取当前 URL?