2012-07-04 3 views
5

Я ищу способ получить часть #anchor из текущего URL-адреса с помощью JavaScript. Например:Получение #id из текущего URL-адреса

http://my-page.com/index.html#contact-us

вернуться бы contact-us.

Я мог бы разбить URI на конечном счете #, а затем взять последний кусок, но я ищу несколько более приятное и более чистое предложение. Естественная функция (jQuery?) Будет отличной, но я думаю, что я слишком много прошу.

ответ

11

Использование location.hash:

location.hash.slice(1); 

Он начинается с #, следовательно, .slice(1). Учитывая произвольная строка, вы можете использовать встроенный в URL-разбор функции путем создания <a> элемента, и установить HREF, а затем прочитать другие свойства, такие как , hostname, hash, и т.д. JQuery пример:

$('a').attr('href', url)[0].hash; 
+2

ни '' splice' ни slice' является частью 'String.prototype'. 'location.hash.substr (1)' будет делать трюк. – lonesomeday

+0

@lonesomeday Спасибо, была опечатка в коде. Объяснение использовало правильный характер. EDIT: ['String.prototype.slice'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice) в MDN. –

+1

'slice', конечно, является частью' String.prototype'. Извиняюсь за мой идиотизм. – lonesomeday

1

Если вы работаете с переменной:

var url = "http://my-page.com/index.html#contact-us"; 

var hash = url.substring(url.indexOf("#") + 1); 
Смежные вопросы