Определить, если запрос #!/search/query
:
location.hash==='#!/search/query'
Узнать о частях запроса, предполагая, что запрос #!/search/query
:
var parts = location.hash.split('/');
parts[0]
- это #!
. parts[1]
равно search
, а parts[2]
равно test
. Делать с нужными вам деталями теперь должно быть достаточно тривиально.
В ответ на комментарии:
function getPartAndRemainder(){
var parts = location.hash.split('/');
if(parts[0]!=='#!' || parts.length<2){
// Value after # does not follow the expected pattern #!/part/any_parameters
throw new Error('Cannot parse application part.');
}
return {
// Contains the part of your application (word after first slash after #)
part: parts[1],
// Contains everything after second slash after # or the empty string
remainder: location.hash.substring(
// Length of #! (or whatever somebody might use instead)
parts[0].length
// Length of first slash
+1
// Length of your application part's name
+parts[1].length
// Length of the second slash
+1)
};
}
Функция возвращает объект, который содержит часть вашего приложения с ключом part
, а ключ remainder
будет содержать все остальное. Итак, если ваш URI будет something#!/search/test
, функция вернет {part:'search', remainder:'test'}
.
Если URI не может быть проанализирован, вы получите сообщение об ошибке и вам следует вместо этого использовать разумное значение по умолчанию.
Вы будете использовать метод следующим образом при каждом изменении хеша или при каком-либо другом событии (моменте времени), когда вас интересует значение хеш-функции:
try {
var hashValue = getPartAndRemainder();
if(hashValue.part==='search'){
var query = hashValue.remainder;
alert('You searched: '+query)
}
if(hashValue.part==='inbox'){
alert('You are in inbox, now');
}
} catch(e){
// It was not possible to parse the value after the # from URI according to our expected pattern.
alert('No idea what to do with: '+location.hash);
}