Использование нескольких идентификаторов фрагментов в URL - PullRequest
6 голосов
/ 11 февраля 2011

Мне было интересно, могу ли я использовать несколько идентификаторов фрагментов в URL, например, вот так: http://example.com/videos/index.html#videos#video_2

Я использую систему вкладок jQuery Tools на моей странице index.html с плагином истории,На вкладке «Видео» этой страницы есть флэш-видео плеер и список видео на нем.При нажатии на миниатюру видео загружается файл в проигрыватель.

Я бы хотел, чтобы посетитель мог добавлять в закладки не только вкладку #videos, но и конкретное видео.

Совершенно неправильно я считаю, что иметь два идентификатора фрагмента в URL - это способ достичь этого?

Ответы [ 4 ]

5 голосов
/ 11 февраля 2011

Я почти уверен, что двойная якорная ссылка невозможна!

Вы можете поместить указатель на нужную вкладку и видео в строке запроса URL (например, mysite.com/videos/index.html?tab=video&video=2), а затем проанализировать это в JavaScript. Это может быть добавлено в закладки.

Однако не могли бы вы придерживаться исходной модели (используя одну # якорную ссылку), а затем просто использовать JavaScript, чтобы найти вкладку, в которой находится этот тег, и, следовательно, показать правильную вкладку?

2 голосов
/ 09 августа 2014

Регулярное выражение для разбора фрагмента URL после # выглядит следующим образом:

(#(.*))?

Это означает, что каждый символ может быть передан.Итак, выберите один из этих двух подходов:

  1. преобразовать все хэши после первого в «% 23».также вам нужно сделать это (преобразование в% HEX eq.) для всех недопустимых или зарезервированных символов. ex: http://domain.com/app#first%23second
  2. Используйте несколько хешей и используйте их в приложении!Первый способ прост, но может не быть реализован в вашем конкретном приложении.

см. этот документ , чтобы узнать о допустимых символах после #.

2 голосов
/ 11 февраля 2011

Нет, вы не можете использовать несколько хэштегов в URL.Идентификатор после символов хеша приводит к привязке закладки на странице, и вы можете перейти только к одной привязке, вы не можете перейти к двум привязкам одновременно.

Если вы добавляете видео в закладки,Естественно, что URL ведет к видео, и если вам нужно показать определенную вкладку на странице, у вас должен быть код, который распознает привязку видео и показывает правильную вкладку.

0 голосов
/ 08 июня 2018

Простой способ - использовать такую ​​ссылку:

index.html#video_2

Затем проанализируйте хеш, чтобы получить идентификатор видео:

if (location.hash.indexOf("#video_" === 0)) {
    var index = location.hash.indexOf('_')
    var id = location.hash.substring(index + 1)
    // use jQuery to click the 'videos' tab
    // load the video with id
}

Вы также можете прослушать событие "hashchange" , на случай, если кто-то скопирует / вставит URL для определенного видео, уже находясь на вашей веб-странице (например, с другим хешем):

window.addEventListener("hashchange",function(event){
    // check hash for video with ID
});
...