четверг, 24 сентября 2009 г.

Как браузер определяет next page на странице для быстрой постраничной навигации?

Как браузер определяет ссылку «next page» на странице? – Задался я сегодня таким вопросом, в процессе навигации по поисковику при помощи комбинаций клавиш, без использования мыши. Общеизвестный факт, что для постраничной навигации в браузере можно использовать комбинации клавиш вида ctrl+курсорные клавиши. По крайней мере, это работает без проблем на многих популярных сайтах в браузерах Opera и Firefox.

Но как же браузер определяет, какая ссылка является следующей логической страницей в цепочке html-документов? Начал рассматривать варианты реализации. Самое первое, что пришло на ум, это использование отношений ссылок в документе при помощи атрибута rel у элементов <a>. Догадка оказалась неверна, её в основном используют поисковики для индексации, но никак не браузеры. Ещё вариант в <head> html-страницы указать

<LINK rel="prev" href="page2.html">
<LINK rel="next" href="page4.html">

но назначние такое же, суть вопроса не меняется.

Второй вариант, как это можно реализовать, это повесить события JavaScript на нажатия клавиш, для быстрого перехода по пейджерам. Собственно, поисследовав код на поисковике Яндекс, я нашёл следующее. Они вешают вызов функции на событие document.onkeydown. Сама функция выглядит следующим образом:

function keyboard_navigation(D) {
  D = D || window.event;
  var A = D.keyCode;
  if (D.ctrlKey) {
    var B = $id("b-head-search");
    if (A == 13) {
      B.submit();
    }
    var E = (D.target || D.srcElement).tagName;
    if (E != "INPUT" && E != "TEXTAREA") {
      var C;
      if (A == 37) {
        C = $id("previous_page");
      }
      if (A == 39) {
        C = $id("next_page");
      }
      if (C) {
        location.href = C.href;
      }
      if (A == 38 && B.text) {
        B.text.focus();
        B.text.select();
      }
    }
  }
}

После этого, полез смотреть на Google, как реализована у них постраничная навигация при помощи комбинации клавиш ctrl+cursor left или ctrl+cursor right. Но, оказалось, что никаких обработчиков событий с клавиатуры у них не висит, и в Firefox подобный финт не работает. Такая комбинация клавиш отрабатывала только в Opera.

Получается, что браузер Opera имеет собственный детектор пейджингов на странице. Поиски в просторах Интернета не сразу дали ответ на мой вопрос. Моё упорство и сильный интерес всё-таки победили после получасовых поисков. Оказывается, браузер Opera использует собственную технологию для определения ссылок перехода на следующую страницу, для многостраничных документов или блогов. Имя этой технологии FastForward.

Opera FastForward – технология, введенная ещё со времён Opera 7. Она автоматически «угадывает» следующую страницу, и обеспечивает быструю навигацию по цепочке страниц. Это очень удобно, например, при чтении блогов, можно осуществлять постраничное чтение, всего лишь нажимая пробел для пролистывания. Как это работает? Opera загружает содержимое страницы и в нём ищет определённые ссылки, которые часто используются для навигации по многостраничным документам, содержащие текст вида "next" или ">>". Я сразу же полез в папку, где лежит исполняемый файл Оперы, и начал искать в конфигах. Нашёл файл fastforward.ini, в нём и находились настройки для этого заветного FFwd. Оказывается, в нём прописаны самые распространенные сигнатуры для большинства языков, по которым в тексте ссылок ищется адрес перехода на следующую страницу. Опытным путём, я выяснил, если на странице находится несколько подобных ссылок, то во внимание будет взято лишь последнее вхождение на странице. Так что, такую вот хитрую технологию использовали разработчики браузера Opera.

Именно за такие мелкие навороты, удобство и скорость работы я и люблю браузер Opera, постоянно использую для серфинга по internet.

1 комментарий:

  1. интересная статья, не думал даже что в браузере будет восполнено то что отсутствует на сайте

    ОтветитьУдалить

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting