Возможно ли использование Ajax Deep Linking без добавления хешей ('#') в ссылках - PullRequest
3 голосов
/ 10 января 2011

Большинство плагинов с глубокими ссылками jquery, которые я видел, требовали, чтобы я прикрепил '#' к своим ссылкам.Вот пример:

<a href="#page1.html">Page 1</a>

Даже твиттер делает это (однако твиттер следует спецификации Google для просматриваемых ссылок, используя #!, что также поддерживается библиотеками глубоких ссылок jquery, такими как Jquery BBQ и Jquery Address).

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

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 02 ноября 2011

Это должно быть возможно при использовании HTML5 . Я недавно искал информацию на эту тему и нашел эту очень интересную библиотеку History.js .

Он использует HTML5 , когда это возможно, для глубоких ссылок без хэша, и HTML4 с хэшем в противном случае (или ничего, если вы предпочитаете это делать).

Эта статья автора History.js определенно заслуживает прочтения.

3 голосов
/ 10 января 2011

Нет - если вы хотите углубить связь с помощью AJAX, вам придется заставить ее работать таким образом. Якорь - единственная часть URL, которая может быть обновлена ​​без перезагрузки страницы. Обычно он также не отправляется на сервер, поэтому всегда обрабатывается браузером.

Одна вещь, которую вы могли бы сделать, это указать фактическую ссылку в теге a, а затем использовать jQuery для обновления ссылки:

<a href="page1.html" class="ajaxLoad">Page 1</a>

<script>
$(function(){
  $("a.ajaxLoad").each(function(){ this.href = '#' + this.href })
});
</script>

Если JavaScript отключен, пользователь будет перенаправлен на страницу «page1.html» при нажатии на ссылку. В противном случае ссылка изменится на якорную, и вы сможете получить ее с помощью кода с глубокими ссылками. Преимущество чего-то подобного заключается в том, что браузеры, не поддерживающие JavaScript, смогут правильно использовать ссылки (в том числе поисковые роботы).


Редактировать: Просто чтобы вы знали, есть несколько вещей, которые вы можете сделать, вместо того, чтобы использовать JavaScript, чтобы изменить его. Например, вы можете прикрепить к обработчику нажатий ссылки и использовать load или что-то еще, чтобы изменить область, в которую вы хотите загрузить свою страницу.

$("a.ajaxLoad").click(function(e){
    e.preventDefault();
    $("#content").load(this.href + ' #content');
});
2 голосов
/ 10 января 2011

Якорь - единственная часть, которую можно изменить без полной перезагрузки страницы.Так что по определению у вас нет других путей.Кроме того, по определению, якорь не передается на сервер, поэтому при отключенном javascript это, очевидно, не будет работать.

...