7

JavaScript を使用して URL の最後の部分を表示する必要があります。

このコードを使用していますが、これにより URL 全体が表示されます。

<script language="javascript">

document.writeln(document.location);
var url = $(this).attr("href");
var part = url.substring(url.lastIndexOf('/') + 1);

</script>

URL が次のようになっている場合:

domain.com/something/file

「ファイル」のみを表示する必要があります。

4

4 に答える 4

14

document.write(window.location)場所を書く理由は、実際には を返すのtoStringメソッドによるものです。window.locationwindow.location.href

// This will fallback to the location.pathname if this
// is not the location already or not an anchor.
var path = this.pathname || window.location.pathname;
var part = path.split('/').pop();

パス名は、ドメイン名の後のすべてです。したがって、次のhttp://example.com/something/fileように分解します。

  1. プロトコル:http:
  2. ホスト名:example.com
  3. パス名:something/file
  4. href:http://example.com/something/file

(ポート、検索 ( ?this=that) およびハッシュ ( #hash) もあり、この場合は両方とも空になります)

だから、私はそれを取りsomething/filesplitこれが である場所ならどこでも配列に入れてい/ます。["something", "file"]

その後pop、アレイの最後の部分 (この場合は「ファイル」) に対して ping を実行します。


どちらwindow.location<a>タグにも、これらのプロパティがあります。そのため、URL を解析する必要がある場合は、javascript で次の操作を実行できます。

var anchor = document.createElement('a');
anchor.href = '/about'; // this could be any relative or absolute url

anchor必要に応じて、これらすべてのプロパティが用意されています。正規表現などは必要ありません。


アップデート

新しいブラウザー ( url-polyfillを使用しない限り IE を除く) では、次のようなURL代わりに使用できます。<a />

const url = new URL('/about', this.location)
// or if you don't care about the host, you can do the following
// const url = new URL('http://localhost/about')

これには、他のすべての情報と が含まれてurl.searchParamsいるため、検索文字列を自分で解析する必要もありません。

于 2013-08-12T19:16:29.653 に答える
8
<script type="text/javascript">

var segment_str = window.location.pathname; // return segment1/segment2/segment3/segment4
var segment_array = segment_str.split( '/' );
var last_segment = segment_array.pop();
document.write(last_segment); // alerts segment4

</script>

JsFiddle: http://jsfiddle.net/HNMV3/1/

于 2013-08-12T19:15:15.183 に答える
1
var pathname = window.location.pathname,
    part = pathname.substr(pathname.lastIndexOf('/') + 1);
于 2013-08-12T19:17:42.593 に答える
0

replace(/-/g," ") および split(".html") は、URL から「ハイフン」と「.html」を削除するため、パス名のみが保持されます。

var parts=window.location.pathname.split("/");
var query=parts[parts.length-1].split(".html");
query[0]=query[0].replace(/-/g," ");
document.write(query[0])
于 2015-01-03T15:03:20.457 に答える