15

我正在尝试在网页顶部添加一个“返回目录”按钮,该按钮会将用户重定向到相同的 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>

但我缺少正确的代码,这会从当前 URL 中删除文件名document.URL

请问这里有人有什么好主意吗?

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

而且我不希望这一次使用 jQuery。

4

6 回答 6

27

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

它肯定会起作用!

于 2013-06-07T13:13:05.637 回答
3

这个单线也适用:

document.URL.split('/').slice(0, -1).join('/')
于 2016-11-18T15:22:40.043 回答
3

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"
}
于 2019-11-26T07:34:51.553 回答
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('/'));
于 2013-06-07T13:22:33.840 回答
1

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

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

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

  1. \/: 发现 ”/”
  2. [^/]+: 在它后面查找一个或多个不是“/”的字符
  3. \/?: 在这些字符之后找到一个可选的“/”
  4. $: 找到字符串的结尾

然后通过 删除这些'',所以我们只剩下目录了。

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

于 2017-12-18T00:54:58.177 回答
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);
于 2013-06-07T13:28:46.260 回答