У меня проблемы с хешами в Chrome (и Safari). Я использую хеш для хранения строки поиска и обновляю ее по мере ввода. Таким образом, я добавляю только 1 запись в историю за поиск, я заменяю текущую запись истории, когда она набрана. *
location.replace(location.href.slice(0, -location.href.split("#!")[1].length - 2) + searchHash);
Этот , похоже, не работает в Webkit , но мне удалось обойти его с
history.back(1);
setTimeout(function () { location.hash = searchHash; }, 50);
К сожалению, Chrome часто меняет сам URL, основываясь на моей истории просмотров. Поэтому, если я раньше искал frog (/#!search/frog
) и теперь начинаю поиск frisking (/#!search/frisking
), Chrome автоматически выполнит автоматическое заполнение /#!search/fr
до /#!search/frog
. В основном это просто сбивает с толку людей, которые хотят ссылаться на этот конкретный поиск, но иногда Chrome запускает отдельную часть сайта, когда решает, что поисковый запрос выглядит как хеш для одной из других страниц.
Хромирование автозаполнения при наборе текста часто очень полезно, но я просто не вижу значения автозаполнения URL-адресов, введенных JavaScript. Есть ли способ предотвратить это? Я что-то здесь не так делаю?
* Я не мог использовать location.hash, поскольку Fx декодирует его .
Обновление: Если я удалю history.back(1)
, Chrome больше не будет автоматически завершать хэш ( Дж. Стин ответ ).