ошибка window.location.href + хеш в Safari? - PullRequest
3 голосов
/ 15 марта 2011

У меня есть скрипт в моем файле JavaScript, где мне нужно открыть новый файл с уже установленным хешем, что-то вроде:

function search(queryString){
    window.location.href = "dosome.php#" + queryString
}

, потому что dosome.php - это страница, где у меня есть все скриптыдля поиска ...

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

Он работает в Firefox и Chrome, но по какой-то причине он не работает в Safari - он не отправляет URL с хешем.Safari отправляет:

domain.com/dosome.php

вместо

domain.com/dosome.php#queryvalues

В чем может быть проблема?

Ответы [ 3 ]

5 голосов
/ 15 марта 2011

Если ваш сервер на dosome.php делает некоторые перенаправления, хэш НЕ сохраняется, по крайней мере, в Safari 4 и IE8. Chrome и Firefox работают хорошо.

Чтобы проверить это, попробуйте ввести URL http://yourdomain.com/...dosome.php#... в адресной строке Safari и посмотреть, не теряет ли Safari значение #. (Протестируйте оба с помощью w / o www, даже простое перенаправление www теряет #.)

Если это так, то вы ничего не можете сделать на стороне сервера, потому что #... не отправляется на сервер; это клиент, который должен не потерять его во время навигации.

1 голос
/ 17 сентября 2015

У меня была похожая проблема.

На iPhone 5 в Safari произошел сбой следующего кода:

window.location.href = 'http://example.com/result#somehash'

Safari перенаправлял на http://example.com/result/

В Chrome он работал правильно на том же телефоне, что и на рабочем столе.

Я заметил, что это добавление косой черты в конец, и подумал, сработает ли просто добавление косой черты между хешем.

Сделано!

Я изменил свой код на это, и это сработало:

window.location.href = 'http://example.com/result/#somehash'

Обратите внимание на / перед хешем.

1 голос
/ 16 марта 2011

Это сделано с той же страницы?Значение, dosome.php?

Затем попробуйте использовать location.hash,

location.hash = "#somestring";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...