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

时间:2013-06-07 13:06:25

标签: javascript redirect directory

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

例如,在查看网址时点击该按钮

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

中的当前网址中删除文件名

请问有人有好主意吗?

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

我不想一次使用jQuery。

6 个答案:

答案 0 :(得分:19)

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

它肯定会起作用!

答案 1 :(得分:2)

这个单行也有效:

GRANT OPTION

答案 2 :(得分:1)

/* to avoid query parameters, use pathname instead of href */
var l = document.location.pathname.split('/');
l.pop();
console.log(document.location.origin + l.join('/'));

答案 3 :(得分:1)

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

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

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

  1. \/:找到&#34; /&#34;
  2. [^/]+:在其后面找到一个或多个不是&#34; /&#34;
  3. 的字符
  4. \/?:找一个可选的&#34; /&#34;在那些角色之后
  5. $:找到字符串的结尾
  6. 然后按''删除这些内容,因此我们只留下目录。

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

答案 4 :(得分:0)

请尝试以下操作,其中既考虑了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);

答案 5 :(得分:0)

console.log(new URL(document.URL));

您将获得所有这样的对象:

{
  href:"https://yy.xx.id/index.php/5351/user/private/images%20%282%29.jpeg?forcedownload=1",

  origin:"https://smi.kerjaindonesia.id", 
  protocol: "https:", 
  username: "", 
  password: "", 
  pathname: "index.php/5351/user/private/images%20%282%29.jpeg"  ,
  port: "" ,
  protocol: "https:",
  search: "?forcedownload=1"
}