Jump to content

URI фрагмента

(Перенаправлено из фрагмента Hash-bang )

В компьютерном гипертексте фрагмент URI представляет собой строку символов , которая ссылается на ресурс , подчиненный другому, основному ресурсу. Основной ресурс идентифицируется унифицированным идентификатором ресурса (URI), а идентификатор фрагмента указывает на подчиненный ресурс.

Идентификатор фрагмента, представленный решеткой # — необязательная последняя часть URL -адреса документа. Обычно он используется для идентификации части этого документа. Общий синтаксис указан в RFC 3986. [1] Разделитель хэш-метки в URI не является частью идентификатора фрагмента.

В URI хэш-метка # вводит необязательный фрагмент в конце URL-адреса. Общий синтаксис RFC 3986 для URI также допускает необязательную часть запроса , представленную вопросительным знаком. ?. В URI с запросом и фрагментом фрагмент следует за запросом. Части запроса зависят от схемы URI и оцениваются сервером, например: http: поддерживает запросы в отличие от ftp:. документа Фрагменты зависят от типа MIME и оцениваются клиентом ( веб-браузером ). Клиенты не должны отправлять фрагменты URI на серверы при получении документа. [1] [2]

URI, заканчивающийся на # разрешено общим синтаксисом и представляет собой своего рода пустой фрагмент. В типах документов MIME, таких как text/html или любого типа XML, пустые идентификаторы, соответствующие этой синтаксически допустимой конструкции, не допускаются. Веб-браузеры обычно отображают верхнюю часть документа как пустой фрагмент.

Идентификатор фрагмента функционирует иначе, чем остальная часть URI: его обработка происходит исключительно на стороне клиента без участия веб-сервера , хотя сервер обычно помогает определить тип MIME, а тип MIME определяет обработку фрагментов. Когда агент (например, веб-браузер) запрашивает с веб-ресурс веб-сервера, агент отправляет URI на сервер, но не отправляет фрагмент. Вместо этого агент ждет, пока сервер отправит ресурс, а затем обрабатывает ресурс в соответствии с типом документа и значением фрагмента. [3]

На веб-странице HTML агент будет искать привязку, идентифицируемую тегом HTML, который включает в себя id= или name= атрибут, равный идентификатору фрагмента.

  • В URI для MIME text/html такие страницы, как http://www.example.org/foo.html#bar фрагмент относится к элементу с id="bar".
    • Графические веб-браузеры обычно прокручивают страницы, чтобы расположить их так, чтобы верхняя часть элемента, идентифицируемого идентификатором фрагмента, была совмещена с верхней частью области просмотра; таким образом, идентификаторы фрагментов часто используются в таблицах содержания и в постоянных ссылках .
    • Внешний вид идентифицированного элемента можно изменить с помощью :target псевдокласс CSS ; Arc.Ask3.Ru использует это, чтобы выделить выбранную ссылку. В частности CSS display: block может использоваться для отображения контента, только если он является целью, и в противном случае скрыт display: none.
    • Устаревший name Атрибут (разрешенный только для некоторых элементов) имел аналогичную цель в устаревших браузерах. Если присутствует name и id должны быть идентичными.
  • Во всех XML, типах документов включая фрагменты XHTML, соответствующие xml:id или подобное id атрибуты следуют за Name-синтаксис и начинаются с буквы, подчеркивания или двоеточия. Примечательно, что они не могут начинаться с цифры или дефиса. [4]
    • xml:id является одним из немногих общих атрибутов XML, например, xml:lang, который можно использовать без явного объявления пространства имен. [5] В XHTML id необходимо использовать, поскольку XHTML был указан ранее xml:id существовал.
  • В приложениях XML идентификаторами фрагментов в определенном синтаксисе могут быть XPointers ; например, идентификатор фрагмента в URI http://www.example.org/foo.xml#xpointer(//Rube) относится ко всем элементам XML с именем «Rube» в документе, определяемым URI http://www.example.org/foo.xml. Процессор XPointer, учитывая этот URI, получит представление документа (например, запросив его из Интернета) и вернет представление элементов «Rube» документа.
  • В словарях RDF , таких как RDFS , OWL или SKOS , идентификаторы фрагментов используются для идентификации ресурсов в одном пространстве имен XML , но не обязательно соответствуют определенной части документа. Например, http://www.w3.org/2004/02/skos/core#broader определяет понятие «более широкое» в словаре SKOS Core, но оно не относится к конкретной части ресурса, идентифицируемой http://www.w3.org/2004/02/skos/core, полный RDF-файл, в котором объявлена ​​семантика этого конкретного понятия, а также других понятий в том же словаре.
  • В URI для MIME text/plain документы RFC 5147 определяет идентификатор фрагмента для позиций и диапазонов символов и строк в документе, используя ключевые слова " char" и " line". Кажется, поддержка браузера отсутствует. [6] В следующем примере идентифицируются строки с 11 по 20 текстового документа:
    • http://example.com/document.txt#line=10,20
  • В URI для MIME text/csv документов, RFC 7111 определяет идентификатор фрагмента в качестве селектора для строк, столбцов и ячеек с использованием ключевых слов " row" , " col", и " cell", например:
    • http://example.com/data.csv#row=4 – Выбирает 4-ю строку.
    • http://example.com/data.csv#col=2 – Выбор второго столбца.
    • http://example.com/data.csv#row=5-7 – Выбирает три последовательные строки, начиная с 5-й.
    • http://example.com/data.csv#row=5-* – Выбирает все строки, начиная с 5-й.
    • http://example.com/data.csv#cell=4,1-6,2 – Выбирает регион, который начинается в 4-й строке и 1-м столбце и заканчивается в 6-й строке и 2-м столбце.
  • В URI для документов MIME audio/*, image/*, video/* очень немногие имеют определенные фрагменты или семантику фрагментов. [7] Синтаксис Media Fragments URI 1.0 (базовый) поддерживает адресацию медиа-ресурса в двух измерениях (временном и пространственном) с использованием ключевых слов. t и xywh. Таким образом, можно использовать следующие URI медиафрагментов в src атрибут audio или video HTML5 -элемент:
    • http://example.com/foo.mp4#t=10,20
    • http://example.com/bar.webm#t=40,80&xywh=160,120,320,240
    • Другие веб-сайты используют фрагментную часть для передачи дополнительной информации скриптам, выполняющимся на них. Например, Google Video понимает постоянные ссылки в формате #01h25m30s чтобы начать играть с указанной позиции, [8] и YouTube использует аналогичный код, например #t=3m25s. [9]
  • В JavaScript идентификатор фрагмента текущей страницы HTML или XHTML можно получить в свойстве «hash». location.hash – JavaScript также можно использовать с другими типами документов. С появлением AJAX некоторые веб-сайты используют идентификаторы фрагментов для эмуляции поведения кнопки «Назад» в браузерах при изменениях страниц, не требующих перезагрузки, или для эмуляции подстраниц.
    • Например, Gmail использует один URL-адрес почти для каждого интерфейса — почтовых ящиков, отдельных писем, результатов поиска, настроек — этот фрагмент используется для прямой связи между этими интерфейсами. [10]
    • Веб-сайты Adobe Flash могут использовать фрагментную часть для информирования пользователя о состоянии веб-сайта или веб-приложения, а также для облегчения глубоких ссылок , обычно с помощью библиотеки JavaScript SWFAddress.
  • URI, который ссылается на документ JSON , может указывать указатель на определенное значение. [11]
    • Например, URL-адрес, заканчивающийся на #/foo может использоваться для извлечения значения из пары ключ-значение в документе, начинающемся с { "foo": ["bar", "baz"], ... }
  • В URI для MIME application/pdf Программы просмотра документов PDF распознают ряд идентификаторов фрагментов. [12] [13] Например, URL-адрес, заканчивающийся на .pdf#page=35 заставит большинство читателей открыть PDF-файл и прокрутить до страницы 35. Возможны несколько других параметров, в том числе #nameddest= (аналогично якорям HTML), #search="word1 word2", #zoom=и т. д. Несколько параметров можно комбинировать с помощью амперсандов:
    • http://example.org/doc.pdf#view=fitb&nameddest=Chapter3.
  • В SVG фрагментам разрешено указывать такие аргументы, как viewBox(), preserveAspectRatio(), и transform(). [14]

Предложения

[ редактировать ]

Было сделано несколько предложений по идентификаторам фрагментов для использования с обычными текстовыми документами (которые не могут хранить метаданные привязки) или для ссылки на места в документах HTML, в которых автор не использовал теги привязки:

  • По состоянию на сентябрь 2012 года URI медиафрагментов 1.0 (базовый) является рекомендацией W3C . [15]
  • Chrome версии 80 и выше [16] [17] реализовать W3C WICG текстовые фрагменты , [18] так #:~:text=foo заставит браузер искать foo, выделите соответствующий текст и прокрутите до него. Помимо начала и конца, фрагмент также может указывать контекст: текст, который должен предшествовать или следовать за ним. foo но не будет выделен ( пример, в котором используется #:~:text=night-,vision найти «видению», которому предшествует «ночь» ).
  • Индекс пакета Python добавляет хэш MD5 файла к URL-адресу в качестве идентификатора фрагмента. [19] Если бы MD5 был целым (это сломанная хэш-функция ), его можно было бы использовать для обеспечения целостности пакета.
    https://pypi.python.org ... zodbbrowser-0.3.1.tar.gz#md5=38dc89f294b24691d3f0d893ed3c119c
  • хэш -бэнг [20] фрагмент — фрагмент, начинающийся с восклицательного знака !. Он использовался в ныне устаревшем подходе к индексированию динамических одностраничных приложений . недопустим Восклицательный знак в идентификаторах HTML4 , XHTML и XML, что обеспечивает определенную степень отделения от этой функциональности. Однако это разрешено в HTML5 . [21]
    • В период с 2009 по 2015 год Центр веб-мастеров Google предложил, а затем рекомендовал «схему сканирования AJAX». [22] [23] использование начального восклицательного знака в идентификаторах фрагментов для страниц AJAX с отслеживанием состояния :
      http://example.com/page?query#!state
    • Другой реализацией была замена #! с ?_escaped_fragment_=[22]
    • Ряд авторов, в том числе Джени Теннисон из W3C, считали URI хэш-bang проблематичными, поскольку они делают страницы недоступными для тех, у кого JavaScript в браузере не активирован . Они также нарушают заголовки HTTP-реферера , поскольку браузерам не разрешено отправлять идентификатор фрагмента в заголовке Referer. [20]
    • В 2015 году Google отказался от своего предложения по сканированию AJAX, рекомендуя вместо этого использовать прогрессивное улучшение и HTML5 . history.pushState()[24] метод. [25]
    • Сотрудник Mozilla Foundation Джервас Маркхэм предложил для поиска идентификатор фрагмента вида #!s!search terms. Добавление числа после s ( #!s10!) указывает, что браузер должен выполнить поиск по n- му вхождению поискового запроса. Отрицательное число ( #!s-3!) начинает поиск назад с конца документа. браузеры . Доступен сценарий Greasemonkey, позволяющий добавить эту функцию в совместимые [26]
      http://example.com/index.html#!s3!search terms
  • Эрик Уайлд и Марсель Башнагель из ETH Zurich расширили это, чтобы также идентифицировать фрагменты в текстовых документах с использованием регулярных выражений с ключевым словом « match". [27] Они также описывают реализацию прототипа как расширение для браузера Firefox . Например, следующая команда обнаружит нечувствительный к регистру текст «RFC» в любом месте документа:
    http://example.com/document.txt#match=[rR][fF][cC]
  • К. Йи из Института Форсайта предлагает «расширенные идентификаторы фрагментов», разделенные двоеточиями и ключевым словом, чтобы отличать их от идентификаторов привязки. Идентификатор фрагмента текстового поиска с идентификатором "схемы спецификации фрагмента" words" — первое предложение в этой схеме. [28] В следующем примере будет выполнен поиск в документе по первому вхождению строки «некоторый контекст для поискового запроса», а затем выделение слов «поисковый запрос»:
    http://example.com/index.html#:words:some-context-for-a-(search-term)
    • Приведенная выше схема была реализована в Chrome версии 80. [29]
  • Проект LiveURL [30] предложил формат идентификатора фрагмента для ссылки на область текста на странице в форме #FWS+C, где F — длина первого слова (до пяти символов), W — само первое слово, S — длина выделенного текста, а C — 32-битная CRC выделенного текста. [31] Вариант этой схемы они реализовали как расширение для браузера Firefox. [32] используя форму #LFWS+C, где L — длина самого фрагмента, выраженная двумя шестнадцатеричными цифрами. Ссылка на слово «Фрагмент» с использованием реализованного варианта даст:
    http://example.com/index.html#115Fragm8+-52f89c4c
  • Вплоть до Firefox 5 Firefox поддерживал ссылки XPath, такие как #xpath:/html/body/div[3], которые можно было использовать вместе с букмарклетом, например http://antimatter15.com/wp/2009/11/xpath- bookmark-bookmarklet/ для создания ссылок внутри HTML-документов, у которых нет правильных идентификаторов. Эта функция была удалена в рамках очистки кода в https://bugzilla.mozilla.org/show_bug.cgi?id=457102.
  • В формате электронной книги ePub канонический идентификатор фрагмента EPUB (epubcfi, [33] 2011-2017) определяет стандартизированный W3C / IDPF метод ссылки на произвольный контент с использованием идентификаторов фрагментов для поиска незакрепленных текстовых диапазонов посредством структуры документа и сопоставления с образцом. Эти динамические глубокие ссылки помогают находить контент после обновления текста и используются, например, в Apple Books .

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Унифицированный идентификатор ресурса (URI) RFC 3986: общий синтаксис» . Рабочая группа по интернет-инжинирингу. Январь 2005 года . Проверено 6 марта 2012 г.
  2. ^ Р. Филдинг, редактор, Adobe; Дж. Решке, редактор, greenbytes (июнь 2014 г.). «Протокол передачи гипертекста (HTTP/1.1): синтаксис сообщений и маршрутизация» . Целевая группа инженеров Интернета (IETF) . Проверено 27 декабря 2023 г. Целевой URI исключает компонент фрагмента ссылки, если таковой имеется, поскольку идентификаторы фрагментов зарезервированы для обработки на стороне клиента. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  3. ^ «Типы представления и семантика идентификаторов фрагментов» . Архитектура Всемирной паутины, том первый . W3C . 2004 . Проверено 13 июля 2011 г.
  4. ^ «Ограничение действительности: идентификатор» . XML 1.0 (пятое издание) . W3C . 2008 год . Проверено 13 июля 2011 г.
  5. ^ «xml:id версии 1.0» . W3C . 2005 . Проверено 13 июля 2011 г.
  6. ^ «Выпуск 77024» . Хром . 2011 . Проверено 13 июля 2011 г.
  7. ^ «Обзор типов СМИ» . Рабочая группа W3C по медиафрагментам . 2009 . Проверено 29 апреля 2009 г.
  8. ^ «Новая функция: ссылка внутри видео» . 19 июля 2006 г. Проверено 13 июля 2011 г.
  9. ^ Ссылка на конкретный контент в Gmail , Google Blogographyd, 17 ноября 2007 г.
  10. ^ Брайан, П. (2 апреля 2013 г.). «RFC 6901 — Указатель нотации объектов JavaScript (JSON)» . Интернет-сообщество . Проверено 14 июля 2022 г.
  11. ^ «Параметры открытия PDF-файлов – Указание параметров в URL-адресе» (PDF) . Adobe. Апрель 2007 года . Проверено 20 сентября 2017 г.
  12. ^ Тафт, Э.; Правец, Дж.; Зиллес, С.; Масинтер, Л. (май 2004 г.). «RFC 3778 – Тип носителя приложения/pdf» . www.tools.ietf.org . Интернет-сообщество. дои : 10.17487/RFC3778 . Проверено 20 сентября 2017 г.
  13. ^ «Связывание — SVG 1.1 (второе издание)» .
  14. ^ «Медиа-фрагменты URI 1.0 (базовая) Рекомендация W3C» . Проверено 25 сентября 2012 г.
  15. ^ «Перейти к фрагменту текста» . Статус платформы Chrome . Гугл Хром . Проверено 18 мая 2020 г.
  16. ^ Келли, Гордон. «Выпущен Google Chrome 80 с противоречивым обновлением глубоких ссылок» . Форбс . Проверено 4 июня 2020 г.
  17. ^ «WICG/scroll-to-text-fragment: предложение разрешить указание фрагмента текста во фрагменте URL-адреса» . Гитхаб . WebPlatform.org Группа сообщества инкубаторов в W3C . Проверено 18 мая 2020 г.
  18. ^ «Поддержка проверки Pypi md5» . Проверено 13 июля 2011 г. Pypi имеет привычку добавлять фрагмент md5 к URL-адресам яиц, мы будем использовать его для проверки уже имеющихся файлов дистрибутива в кеше.
  19. ^ Перейти обратно: а б «Хеш-URI» . Блог W3C . 12 мая 2011 г. Проверено 13 июля 2011 г.
  20. ^ «HTML 5.1 2-е издание» . W3C . 2017 . Проверено 3 августа 2018 г.
  21. ^ Перейти обратно: а б «Предложение по обеспечению возможности сканирования AJAX» . 07.10.2009 . Проверено 13 июля 2011 г.
  22. ^ «(Спецификации) Обеспечение возможности сканирования приложений AJAX» . Гугл Инк . Проверено 4 мая 2013 г.
  23. ^ «Управление историей браузера» . Сеть разработчиков Mozilla . Проверено 23 февраля 2017 г.
  24. ^ «Устаревшая наша схема сканирования AJAX» . Официальный блог Центра веб-мастеров Google . Проверено 23 февраля 2017 г.
  25. ^ Поиск фрагментов , gerv.net
  26. ^ Идентификаторы фрагментов для простых текстовых файлов, Эрик Уайльд и Марсель Башнагель, Швейцарский федеральный технологический институт (ETH Zürich), Материалы шестнадцатой конференции ACM по гипертексту и гипермедиа. дои : 10.1145/1083356.1083398
  27. ^ Идентификаторы фрагментов текстового поиска , К. Йи, Сетевая рабочая группа, Институт прогнозирования, март 1998 г.
  28. ^ bmcquade; Бокан; Нбуррис (24 марта 2022 г.). «Функция: прокрутить до фрагмента текста» . Статус платформы Chrome . хромиум.орг . Проверено 3 мая 2022 г.
  29. ^ Проект LiveURLs
  30. ^ Технология, лежащая в основе LiveURL , по состоянию на 13 марта 2011 г.
  31. ^ Дополнение Firefox «Web Marker» , по состоянию на 13 марта 2011 г.
  32. ^ «Канонические идентификаторы фрагментов EPUB 1.1» . idpf.org . Проверено 3 июня 2020 г.
[ редактировать ]
  • Рабочая группа W3C по медиафрагментам , устанавливающая синтаксис и семантику URI для обращения к медиафрагментам в аудиовизуальном материале (например, к области изображения или фрагменту видео).
  • MediaMixer Портал сообщества собирает презентации, учебные пособия, примеры использования и демонстрационные материалы, связанные с использованием технологии Media Fragment.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 94a24eb288fb26b0dd529630bb992f40__1717493700
URL1:https://arc.ask3.ru/arc/aa/94/40/94a24eb288fb26b0dd529630bb992f40.html
Заголовок, (Title) документа по адресу, URL1:
URI fragment - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)