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 ★★★★★
() автор топика

и возвращают что-нибудь типа false

Или вызывают что-нибудь типа event.preventDefault().

dimgel ★★★★★
() автор топика

Открой консоль и введи: history.replaceState({}, 'ololo', '?foo=bar');

Ничего не перезагрузится. Если ты это имел ввиду.

WitcherGeralt ★★
()

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

Просто не нужен вот и всё. Ещё может быть необходимость хранить историю, а хеш на историю ника кне влияет.

WitcherGeralt ★★
()

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

Не логируется на сервере

anonymous
()
Ответ на: комментарий от WitcherGeralt

Ага, значит всё ещё злее… Это уж совсем как-то грязно-хаково выглядит. (Мечтательно: а домен другой подставлять оно позволяет?)

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 ★★★★★
() автор топика

а почему они должны перегружаться целиком, когда вы карту двигаете?

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

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

Что?

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

Что?

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

ddidwyll ★★★★
()

man History API

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

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

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

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

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

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

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

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

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

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

Стандартный API браузера, созданный именно для этой цели, это теперь хаково? Дожили.

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

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

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

static_lab ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.