15

Web ページの上部に「ディレクトリに戻る」ボタンを追加しようとしています。これにより、ユーザーは同じ 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

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. [^/]+: 「/」以外の 1 つまたは複数の文字を検索します。
  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 に答える