我正在尝试在网页顶部添加“返回目录”按钮,该按钮会将用户重定向到相同的网址,但其中没有文件名。
例如,在查看网址时点击该按钮
http://example.com/somedir/button.html
会将您重定向到
所以我创建了以下代码:
<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。
答案 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(/\/[^/]+\/?$/, '');
这有效地说明了以下内容(假设它们可以按此顺序找到)
\/
:找到&#34; /&#34; [^/]+
:在其后面找到一个或多个不是&#34; /&#34; \/?
:找一个可选的&#34; /&#34;在那些角色之后$
:找到字符串的结尾然后按''
删除这些内容,因此我们只留下目录。
同样,这假设 是一个标记目录的斜杠,并且这不仅仅是唯一斜杠在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"
}