Может ли страница отображать различное содержимое, если хэш URL-адреса изменяется? - PullRequest
3 голосов
/ 02 июня 2009

Как страница может отображать различное содержимое на основе URL-хэша ?

Я не говорю о браузере, прокручивающем вниз, чтобы отобразить привязанный раздел, но что-то вроде JavaScript реагирует на этот хэш и загружает различный контент через AJAX.

Это часто или даже вероятно?

Ответы [ 7 ]

2 голосов
/ 03 июня 2009

Сэмми - это библиотека JavaScript, которая делает именно это.

2 голосов
/ 02 июня 2009

Я только что создал систему, чтобы сделать это несколько недель назад

В браузере вы должны обнаружить хеш, вот как это сделать

// test all possible places hash could be on different browsers
if(window.location.hash){
   hash = window.location.hash;
} else if (document.location.hash){
   hash = document.location.hash;
} else if (location.hash){
   hash = location.hash;
}

// some browsers start the hash with #, remove it for consistency
if(hash.substring(0,1) == '#'){
    hash = hash.substring(1,hash.length);
}

Затем обработайте значение хеш-переменной, чтобы вызвать изменения страницы, как вам угодно.

например: http://www.example.com # страницаА

if(hash = 'pageA'){
  document.getElementById('mainContentDiv').innerHTML = '<p> content for the page displayed when the hash sais pageA</p>';
}
2 голосов
/ 02 июня 2009

О, да - это становится общим шаблоном для обработки постоянства состояния страницы в URL, когда контент управляется AJAX.

Javascript может получить доступ к этому значению через window.location.hash. Как только это будет сделано, вы можете выполнять любые действия в зависимости от значения этого хеша

  • Показать / скрыть узлы
  • Делает другие AJAX звонки
  • Изменить заголовки страниц или цвета
  • Обмен изображениями
  • и т.д.

Действительно, любой эффект DHTML.

2 голосов
/ 02 июня 2009

Это иногда делается. Youtube использует хэши для ссылки на определенные временные метки в видео.

РЕДАКТИРОВАТЬ: я предположил, что у вас может возникнуть проблема, когда пользователь поднимается и вручную редактирует хеш в адресной строке, страница не перезагружается и даже javascript не будет знать, что он изменился. Я был неправ. Я попробовал это на Youtube, это работает.

1 голос
/ 28 августа 2010

Ответ на этот вопрос будет более или менее таким же, как мои ответы на эти вопросы:

Итак, два проекта, которые вы, вероятно, захотите посмотреть, которые объясняют весь процесс хеширования и используют его с ajax:

  • jQuery History (использование хэшей для управления состоянием ваших страниц и привязки к изменениям для обновления вашей страницы).

  • jQuery Ajaxy (расширение ajax для истории jQuery, позволяющее создавать полноценные веб-сайты на ajax, оставаясь полностью ненавязчивым и изящно разлагаемым).

1 голос
/ 02 июня 2009

В приложениях с интенсивным использованием AJAX (например, Gmail) довольно часто иметь возможность использовать все компоненты AJAXy, в то же время позволяя вам создавать закладки для определенной страницы или связывать кого-либо с определенной страницей. Если бы они этого не делали, это было бы плохо для юзабилити. Получить хэш URL довольно просто, выполнив window.location.hash, поэтому вы можете использовать оператор, похожий на переключатель, при загрузке страницы для выполнения определенного набора функций Javascript, если хеш присутствует.

Некоторые плагины jQuery, обеспечивающие эту функциональность: history / remote , history .

1 голос
/ 02 июня 2009

Поскольку JavaScript имеет доступ к URL-строке, он, конечно, может по-разному влиять на содержимое URL.

Я иногда видел что-то подобное, но я не думаю, что это хороший способ реагировать, если только не в очень специфических целях.

Мне запомнилось одно из следующих применений: TiddlyWiki с использованием дополнительной части хеша для установки параметров рендеринга страницы и т. Д.

...