Фрагмент URI - URI fragment
В компьютере гипертекст, а Фрагмент URI это нить из символы это относится к ресурс это подчиняется другому, первичному ресурсу. Первичный ресурс обозначен Единый идентификатор ресурса (URI), а идентификатор фрагмента указывает на подчиненный ресурс.
Идентификатор фрагмента, обозначенный решеткой. #
необязательная последняя часть URL для документа. Обычно он используется для идентификации части этого документа. Общий синтаксис указан в RFC 3986. В знак решетки разделитель в URI не является частью идентификатора фрагмента.
Основы
В URI хэш-метка #
вводит необязательный фрагмент в конце URL-адреса. Общий RFC 3986 синтаксис для URI также допускает необязательный запрос часть, введенная знаком вопроса ?
. В URI с запросом и фрагментом фрагмент следует за запросом. Части запроса зависят от схемы URI и оцениваются сервером, например, http:
поддерживает запросы в отличие от ftp:
. Фрагменты зависят от документа Тип MIME и оцениваются клиентом (веб-браузер ). Клиенты не должны отправлять фрагменты URI на серверы при получении документа, и без помощи локального приложения (см. Ниже) фрагменты не участвуют в HTTP перенаправления.[1]
URI, заканчивающийся на #
разрешено общим синтаксисом и представляет собой своего рода пустой фрагмент. В типах документов MIME, таких как текст / html
или любого типа XML пустые идентификаторы, соответствующие этой синтаксически допустимой конструкции, не допускаются. Веб-браузеры обычно отображают верхнюю часть документа для пустого фрагмента.
Идентификатор фрагмента функционирует иначе, чем остальная часть URI: его обработка исключительно клиентский без участия веб сервер, хотя сервер обычно помогает определить тип MIME, а тип MIME определяет обработку фрагментов. Когда агент (например, веб-браузер) Запросы а веб-ресурс с веб-сервера агент отправляет URI на сервер, но не отправляет фрагмент. Вместо этого агент ожидает, пока сервер отправит ресурс, а затем агент обрабатывает ресурс в соответствии с типом документа и значением фрагмента.[2]
Примеры
- В URI для MIME
текст / html
такие страницы какhttp://www.example.org/foo.html#bar
фрагмент относится к элементу сid = "бар"
.- Графические веб-браузеры обычно прокручивают страницы, чтобы расположить их так, чтобы верх элемента, идентифицированного идентификатором фрагмента, был выровнен с верхом области просмотра; поэтому идентификаторы фрагментов часто используются в таблицах содержания и в постоянные ссылки.
- Chrome версии 80 и выше[3][4] воплощать в жизнь W3C с WICG Фрагменты текста,[5] так
#: ~: text = foo
заставит браузер искатьфу
, выделите соответствующий текст и прокрутите до него. Помимо начала и конца, фрагмент также может указывать контекст: текст, который должен предшествовать или следовать зафу
но не выделяется (пример, в котором поиску слова "видение" предшествует слово "ночь" ).
- Chrome версии 80 и выше[3][4] воплощать в жизнь W3C с WICG Фрагменты текста,[5] так
- Внешний вид идентифицированного элемента можно изменить с помощью
:цель
CSS псевдокласс; Википедия использует это, чтобы выделить выбранную ссылку. В частности, CSSдисплей: блок
может использоваться для отображения контента только в том случае, если он является целью, и в противном случае скрытдисплей: нет
. - Устаревший
имя
Атрибут (разрешен только для некоторых элементов) имел аналогичное назначение в устаревших браузерах. Если имеетсяимя
ия бы
должны быть идентичными.
- Графические веб-браузеры обычно прокручивают страницы, чтобы расположить их так, чтобы верх элемента, идентифицированного идентификатором фрагмента, был выровнен с верхом области просмотра; поэтому идентификаторы фрагментов часто используются в таблицах содержания и в постоянные ссылки.
- В целом XML типы документов, включая XHTML фрагменты, соответствующие
xml: id
или похожиея бы
атрибуты следуютИмя
-синтаксис и начинаются с буквы, подчеркивания или двоеточия. Примечательно, что они не могут начинаться с цифры или дефиса.[6]xml: id
является одним из немногих общих атрибутов XML, например,xml: lang
, который можно использовать без явного объявления пространства имен.[7] В XHTMLя бы
необходимо использовать, потому что 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, СОВА, или же SKOS, идентификаторы фрагментов используются для идентификации ресурсов в одном Пространство имен XML, но не обязательно соответствуют определенной части документа. Например,
http://www.w3.org/2004/02/skos/core#broader
определяет понятие «более широкий» в словаре SKOS Core, но не относится к конкретной части ресурса, обозначеннойhttp://www.w3.org/2004/02/skos/core
, полный RDF-файл, в котором объявлена семантика этой конкретной концепции, а также других концепций из того же словаря. - В URI для MIME
текст / простой
документы RFC 5147 задает идентификатор фрагмента для позиций и диапазонов символов и строк в документе с помощью ключевых слов "char
" и "линия
". Браузерная поддержка отсутствует.[8] В следующем примере идентифицируются строки с 11 по 20 текстового документа:http://example.com/document.txt#line=10,20
- В URI для MIME
текст / csv
документы, RFC 7111 определяет идентификатор фрагмента в качестве селектора для строк, столбцов и ячеек с использованием ключевых слов "ряд
" , "Col
", и "клетка
", Например:http://example.com/data.csv#row=4
- Выбирает 4-ю строку.http://example.com/data.csv#col=2
- Выбирает 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 / * очень немногие определяют фрагменты или семантику фрагментов.[9] Синтаксис Media Fragments URI 1.0 (базовый) поддерживает адресацию медиаресурса в двух измерениях (временном и пространственном) с использованием ключевых слов
т
иxywh
. Следовательно, можно использовать следующие URI медиа-фрагментов вsrc
атрибутаудио
или жевидео
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
чтобы начать играть с указанной позиции,[10] и YouTube использует аналогичный код, например# t = 3 мин. 25 сек.
.[11]
- В JavaScript, идентификатор фрагмента текущей HTML- или XHTML-страницы можно получить в свойстве "hash"
location.hash
- обратите внимание, что Javascript также можно использовать с другими типами документов. С ростом AJAX, некоторые веб-сайты используют идентификаторы фрагментов для имитации поведения кнопки «Назад» в браузерах для изменений страниц, которые не требуют перезагрузки, или для имитации подстраниц.- Например, Gmail использует один URL-адрес почти для каждого интерфейса - почтовых ящиков, отдельных писем, результатов поиска, настроек - фрагмент используется, чтобы сделать эти интерфейсы напрямую связанными.[12]
- Adobe Flash веб-сайты могут использовать часть фрагмента, чтобы информировать пользователя о состоянии веб-сайта или веб-приложения, а также для облегчения глубокие ссылки, обычно с помощью SWFAddress Библиотека JavaScript.
- В URI для MIME
application / pdf
Документы Программы просмотра PDF распознают ряд идентификаторов фрагментов.[13][14] Например, URL-адрес, заканчивающийся на.pdf # page = 35
заставит большинство читателей открыть PDF-файл и перейти к странице 35. Возможны некоторые другие параметры, включая# nameddest =
(аналогично привязкам HTML),# search = "word1 word2"
,# zoom =
и т. д. Несколько параметров можно комбинировать с амперсандами:http://example.org/doc.pdf#view=fitb& nameddest=Chapter3
.
- В SVG, фрагментам разрешено указывать такие аргументы, как
viewBox ()
,preserveAspectRatio ()
, ипреобразовать ()
.[15]
Предложения
Было сделано несколько предложений для идентификаторов фрагментов для использования с текстовыми документами (которые не могут хранить метаданные привязки) или для ссылки на места в документах HTML, в которых автор не использовал теги привязки:
- По состоянию на сентябрь 2012 года URI 1.0 мультимедийных фрагментов (базовый) является W3C Рекомендация.[16]
- В Python Индекс пакета добавляет MD5 хеш файла в URL-адрес в качестве идентификатора фрагмента.[17] Если бы MD5 не был прерван (это сломанная хеш-функция), его можно использовать для обеспечения честность пакета.
https://pypi.python.org ... zodbbrowser-0.3.1.tar.gz # md5 = 38dc89f294b24691d3f0d893ed3c119c
- А хэш-бэнг[18] фрагмент - это фрагмент, начинающийся с восклицательного знака
!
. Он использовался в устаревшем подходе к динамическому индексированию. одностраничные приложения. An восклицательный знак незаконно в HTML4 (но не в HTML5[19]), XHTML и XML-идентификаторы, предоставляя определенную степень отделения от этой функциональности.- С 2009 по 2015 гг. Центр веб-мастеров Google предложил, а затем рекомендовал "схему сканирования AJAX"[20][21] использование начального восклицательного знака в идентификаторах фрагментов для сохранения состояния AJAX страницы:
http://example.com/page?query#!state
- URI с хеш-бэнгом считались проблематичными рядом авторов, включая Джени Теннисон из W3C, потому что они делают страницы недоступными для тех, у кого нет JavaScript активирован в их браузере. Они тоже ломаются HTTP-реферер заголовки, поскольку браузеры не могут отправлять идентификатор фрагмента в заголовке Referer.[18]
- В 2015 году Google отказался от своего предложения по сканированию с помощью hash-bang AJAX, рекомендовав вместо этого использовать прогрессивное улучшение и HTML5 с
history.pushState ()
[22] метод.[23] - Фонд Mozilla Сотрудник Gervase Markham предложил идентификатор фрагмента для поиска в виде
#! s! условия поиска
. Добавление числа после s (#! s10!
) указывает, что браузер должен искать пое вхождение поискового запроса. Отрицательное число (#! s-3!
) начинает поиск назад с конца документа. А Грязная обезьяна скрипт доступен для добавления этой функции в совместимые браузеры.[24]http://example.com/index.html#!s3! условия поиска
- С 2009 по 2015 гг. Центр веб-мастеров Google предложил, а затем рекомендовал "схему сканирования AJAX"[20][21] использование начального восклицательного знака в идентификаторах фрагментов для сохранения состояния AJAX страницы:
- Эрик Уайльд и Марсель Башнагель из ETH Цюрих расширить это, чтобы также идентифицировать фрагменты в текстовых документах, используя обычные выражения, с ключевым словом "
матч
".[25] Они также описывают реализацию прототипа как расширение для Fire Fox браузер. Например, в любом месте документа можно найти текст RFC без учета регистра:http://example.com/document.txt#match=[rR visible[fF provided[cC])
- К. Йи из Институт Форсайта предлагает «расширенные идентификаторы фрагментов», разделенные двоеточия и ключевое слово, чтобы отличать их от идентификаторов привязки. Идентификатор фрагмента текстового поиска с "id схемы спецификации фрагмента"
слова
"- первое предложение в этой схеме.[26] В следующем примере выполняется поиск в документе первого вхождения строки «некоторый контекст для условия поиска», а затем выделены слова «термин поиска»:http://example.com/index.html#:words:some-context-for-a-(search-term)
- Проект LiveURLs[27] предложил формат идентификатора фрагмента для ссылки на область текста на странице в форме
# FWS + C
, куда F длина первого слова (до пяти символов), W это само первое слово, S длина выделенного текста и C 32-битный CRC выделенного текста.[28] Они реализовали вариант этой схемы как расширение для браузера Firefox,[29] используя форму# 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,[30] 2011-2017) определяет W3C /IDPF -стандартизированный метод ссылки на произвольный контент с использованием идентификаторов фрагментов для нахождения незакрепленных текстовых диапазонов через структуру документа и сопоставление с образцом. Эти динамические глубокие ссылки помогают находить контент после обновления текста и используются, например, в Apple Книги.
Смотрите также
Рекомендации
- ^ «RFC 3986 Uniform Resource Identifier (URI): универсальный синтаксис». Инженерная группа Интернета. Январь 2005 г.. Получено 2012-03-06.
- ^ «Типы представлений и семантика идентификаторов фрагментов». Архитектура всемирной паутины, том первый. W3C. 2004. Получено 2011-07-13.
- ^ «Прокрутите до фрагмента текста». Статус платформы Chrome. Гугл Хром. Получено 2020-05-18.
- ^ Келли, Гордон. «Google Chrome 80 выпущен со спорным обновлением с глубокими ссылками». Forbes. Получено 2020-06-04.
- ^ "WICG / scroll-to-text-fragment: Предложение, позволяющее указывать фрагмент текста во фрагменте URL". GitHub. WebPlatform.org Группа сообщества инкубатора в W3C. Получено 2020-05-18.
- ^ «Ограничение срока действия: ID». XML 1.0 (пятое издание). W3C. 2008. Получено 2011-07-13.
- ^ "xml: id Версия 1.0". W3C. 2005. Получено 2011-07-13.
- ^ «Проблема 77024». Хром. 2011. Получено 2011-07-13.
- ^ «Обзор медиа-типа». Рабочая группа W3C Media Fragments. 2009. Получено 2009-04-29.
- ^ «Новая функция: ссылка в видео». 2006-07-19. Получено 2011-07-13.
- ^ "Ссылка на лучшие части ваших видео". YouTube. 2008-10-30. Получено 2011-07-13.
- ^ Ссылка на конкретный контент в Gmail, Google Blogoscoped, 17 ноября 2007 г.
- ^ «Параметры для открытия файлов PDF - Указание параметров в URL» (PDF). Adobe. Апрель 2007 г.. Получено 2017-09-20.
- ^ "RFC 3778 - Тип носителя приложения / pdf". Интернет-сообщество. Май 2004 г.. Получено 2017-09-20.
- ^ «Связывание - SVG 1.1 (второе издание)».
- ^ «Рекомендации W3C Media Fragments URI 1.0 (базовые)». Получено 2012-09-25.
- ^ "Поддержка проверки Pypi md5". Получено 2011-07-13.
Pypi имеет привычку добавлять фрагмент md5 к своим URL-адресам яиц, мы будем использовать его для проверки уже имеющихся файлов дистрибутива в кеше.
- ^ а б "URI хэша". Блог W3C. 2011-05-12. Получено 2011-07-13.
- ^ «HTML 5.1, 2-е издание». W3C. 2017. Получено 2018-08-03.
- ^ «Предложение сделать AJAX доступным для сканирования». 2009-10-07. Получено 2011-07-13.
- ^ "(Технические характеристики) Обеспечение возможности сканирования приложений AJAX". Google Inc. Получено 2013-05-04.
- ^ «Управление историей браузера». Сеть разработчиков Mozilla. Получено 2017-02-23.
- ^ «Прекращение поддержки нашей схемы сканирования AJAX». Официальный блог Центра веб-мастеров Google. Получено 2017-02-23.
- ^ Поиск фрагментов, gerv.net
- ^ Идентификаторы фрагментов для текстовых файлов, Эрик Уайлд и Марсель Башнагель, Швейцарский федеральный технологический институт (ETH Zürich), Труды шестнадцатой конференции ACM по гипертексту и гипермедиа Дои:10.1145/1083356.1083398
- ^ Идентификаторы фрагментов текстового поиска К. Йи, Сетевая рабочая группа, Институт Форсайта, март 1998 г.
- ^ Проект LiveURLs
- ^ Технология, лежащая в основе LiveURLs, дата обращения 13 марта 2011 г.
- ^ Надстройка "Веб-маркер" для Firefox, дата обращения 13 марта 2011 г.
- ^ "Идентификаторы канонических фрагментов EPUB 1.1". idpf.org. Получено 2020-06-03.
внешняя ссылка
- W3C Медиа-фрагменты Рабочая группа, устанавливающая синтаксис и семантику URI для адресации фрагментов мультимедиа в аудиовизуальном материале (например, области изображения или суб-клипа видео)
- MediaMixer Портал сообщества собирает презентации, учебные пособия, варианты использования и демонстраторы, связанные с использованием технологии Media Fragment