Остановить Chrome автозаполнения хэшей URL? - PullRequest
2 голосов
/ 13 мая 2011

У меня проблемы с хешами в 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 больше не будет автоматически завершать хэш ( Дж. Стин ответ ).

1 Ответ

2 голосов
/ 13 мая 2011

Несколько сайтов, на которых я видел эту технологию, используют задержку ввода, так что местоположение обновляется только после того, как, скажем, пользователь перестал печатать в течение 500 миллисекунд.Таким образом, есть только одна запись в истории.Страница и результаты поиска тем временем обновляются по мере того, как пользователь вводит, например, через ajax.

http://www.prisjakt.nu - это шведский сайт, использующий эту стратегию.

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