2013-08-12 3 views
2

Мне нужно отобразить последнюю часть URL-адреса, используя javascript!Показать последнюю часть URL-адреса javascript?

Я использую этот код, но это будет отображать весь 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

мне нужно только отобразите «файл».

+2

Возможно, вы поступаете правильно; но я думаю, что это только запись «document.location» в этой первой строке. Попробуйте document.writeln (часть) в конце. – Katana314

+0

Проверьте мой ответ с помощью JSFiddle :) –

+0

Использование 'attr ('href')' * подразумевает * (при условии, что вы знаете, что вы делаете), что вы можете попытаться получить URL-адрес из 'href' элемент 'a', а не расположение страницы. Но я не совсем уверен, что вы пытаетесь сделать.Можете ли вы объяснить свое намерение немного лучше? –

ответ

1
<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/

+0

Что это должно быть? –

+0

Проверьте JSFiddle. Он делает то, что вы хотите. :) –

+0

Я проверил это. он открывает предупреждение, и он говорит «безопасно»! что безопасно ?! –

5

Причина document.write(window.location) пишет местоположение из-за toString метода window.location, который действительно возвращает window.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://domain.com/something/file ломается, как это:

  1. протокол: http:
  2. имя хоста: domain.com
  3. путь: something/file
  4. HREF: http://domain.com/something/file

(есть также порт, поиск (?this=that) и хеш (#hash), которые в этом случае были бы пустыми)

Итак, я беру something/file и split тин в массив, где это является /, который был бы ["something", "file"]

После этого я pop пинг от последней части массива, в этом случае "файл"


Оба window.location и любой <a> тег обладают этими свойствами. Так что, если вам нужно разобрать URL, вы можете сделать следующее в JavaScript:

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

А теперь anchor будет иметь все эти свойства, если вы нуждаетесь в них. Нет необходимости в регулярном выражении или что-то еще.

+0

Должно ли это быть 'this.location.pathname'? или 'window.location.pathname' для большей уверенности? –

+0

Не, если это якорный тег, который я принимал, учитывая контекст вопроса. В противном случае, да :) – kalley

+0

любое объяснение было бы здорово. –

1
var pathname = window.location.pathname, 
    part = pathname.substr(pathname.lastIndexOf('/') + 1); 
0

заменить (/ -/г " ") и раскол (" HTML "). Удалим "дефис" и" .html" из URL, таким образом, только сохраняя имя пути только

var parts=window.location.pathname.split("/"); 
var query=parts[parts.length-1].split(".html"); 
query[0]=query[0].replace(/-/g," "); 
document.write(query[0]) 
Смежные вопросы