Как перенаправить на мобильный сайт, но сохранить хэш-тег? - PullRequest
6 голосов
/ 08 декабря 2011

Мне нужно, чтобы, когда пользователь загружает нашу страницу, он проверял, находятся ли они на мобильном устройстве, а затем перенаправлял их на мобильную версию нашего сайта, но сохранял оригинальный хештег по ссылке они следовали.Я попытался установить новое местоположение с помощью хеш-тега в javascript, и он работает в Chrome, но не работает в Safari.Я читал, что это именно то, что делает Safari.Есть ли работа вокруг этого?

Ответы [ 3 ]

4 голосов
/ 28 мая 2014

Вы должны экранировать символ "#", и все будет в порядке.

3 голосов
/ 08 октября 2013

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

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

https://bugs.webkit.org/show_bug.cgi?id=24175

3 голосов
/ 15 июня 2012

Мы только что получили очень похожее сообщение об ошибке от наших клиентов.

Для нас сценарий включал хэштег в виде #quicklogin/abc123 и появлялся только при просмотре сайта в Safari. Это было частью исходного URL, который клиент должен был загрузить, и он предоставил им альтернативный экран входа в систему. При переходе непосредственно к URL-адресу в Safari браузер удалял весь тег и игнорировал его.

Когда мы изменили это на что-то вроде #quicklogin/test (или любой другой хэш, содержащий только буквенные символы), это работало нормально. Он также отлично работал при загрузке сайта и последующем ручном применении хэш-тега в два отдельных этапа.

Итак, мы пришли к выводу, что в Safari могут быть проблемы с хэштегами, содержащими числовые значения.

...