LINUX.ORG.RU

SPA без URL hash

 


0

1

Открываю гугл-карты, вижу URL без ‘#’ зато с каким-то ‘@’: https://www.google.ru/maps/@45.0113105,35.8633855,7z

Открываю яндекс-карты, вижу URL тоже без ‘#’: https://yandex.ru/maps/?ll=34.960150%2C45.056970&z=7.89

Обе страницы не перегружаются целиком, когда я карту двигаю/масштабирую. Хотел было спросить «это как так?!», но пока писал, дошло, что перехватывают что-нибудь типа beforeunload и возвращают что-нибудь типа false. Поэтому так:

  1. Если про перехват угадал: а что именно нынче модно перехватывать? Про beforeunload наугад ткнул.

  2. Чем им ‘#’ не угодил? Единственный вижу минус, что на странице якоря не добавить; но он к картам не относится.

★★★

Единственный вижу минус, что на странице якоря не добавить

Ещё tab control в jQuery UI текущий таб по хэшу выбирает. Но это коряво, т.к. и внутри таб контрола тогда якорей не накидать, и этих таб контролов на странице может быть несколько (видел два вложенных, в коде костыли).

dimgel ★★★ ()
Ответ на: комментарий от dimgel
VM1263:1 Uncaught DOMException:
  Failed to execute 'replaceState' on 'History':
   A history state object with URL 'https://bigbubblebutts.com/' 
   cannot be created in a document with origin
   'https://www.linux.org.ru' and URL
   'https://www.linux.org.ru/forum/web-development/15373960?cid=15374006'.
WitcherGeralt ★★ ()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от anonymous

Потому я и считаю эту фичу грязно-хаковской: в общем случае URL может не соответствовать содержимому страницы. А это столь же мерзко, как например прятать из статус-бара URL ссылки под мышью.

dimgel ★★★ ()
Ответ на: комментарий от dimgel

в общем случае URL может не соответствовать содержимому страницы

Что?

прятать из статус-бара URL ссылки под мышью

Что?

Нет, понятно что ты имеешь ввиду, не понятно, почему ты думаешь, что должно быть иначе?

ddidwyll ★★ ()

man History API

Фича уже достаточно старая.

Чем им ‘#’ не угодил?

Потому что не доходит до сервера. Помимо параноидальных идей про логгирование (ага, как будто загрузки тайлов не палят точно так же локацию), есть ещё вариант, что они оптимизируют первичную загрузку страницы (например, внедряют в неё список тайлов в запрошенной изначально локации, чтобы сэкономить несколько запросов и страница отобразилась быстрее в юзабельном виде), поэтому серверу нужно знать начальные координаты.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от KivApple

Потому что не доходит до сервера.

При перетаскивании яндекс-карты мышкой в небольших границах уже загруженных с сервера квадратов, URL меняется, но никаких запросов на сервер не идёт. Т.е. тоже не доходит до сервера, хоть и без ‘#’.

dimgel ★★★ ()
Ответ на: комментарий от dimgel

При перетаскивании яндекс-карты мышкой в небольших границах уже загруженных с сервера квадратов, URL меняется, но никаких запросов на сервер не идёт. Т.е. тоже не доходит до сервера, хоть и без ‘#’.

Это для первой загрузки карт, например, при переходе по ссылке или при обновлении страницы. Потом всё перехватывается скриптами.

static_lab ★★★★★ ()
Ответ на: комментарий от dimgel

Потому я и считаю эту фичу грязно-хаковской: в общем случае URL может не соответствовать содержимому страницы

В общем случае и сервер может выдавать рандомную страницу вместо определённой урлом.

static_lab ★★★★★ ()