【发布时间】:2011-05-15 01:04:16
【问题描述】:
我在 Chrome(和 Safari)中遇到了一些哈希问题。我正在使用哈希来存储搜索字符串并在输入时对其进行更新。所以我只在每次搜索的历史记录中添加 1 个条目,我会在输入时替换当前的历史记录条目。*
location.replace(location.href.slice(0, -location.href.split("#!")[1].length - 2) + searchHash);
这个doesn't seem to work in Webkit,但我确实设法解决了它
history.back(1);
setTimeout(function () { location.hash = searchHash; }, 50);
不幸的是,Chrome 经常会根据我的浏览历史更改 URL 本身。因此,如果我之前搜索过 frog (/#!search/frog),现在开始搜索 frisking (/#!search/frisking),Chrome 会自动完成 /#!search/fr 到 @987654329 @。大多数情况下,这只会让想要链接到该特定搜索的人感到困惑,但有时 Chrome 在决定搜索词看起来像其他页面的哈希时会启动网站的单独部分。
Chrome 在我键入时自动完成内容通常非常有用,但我就是看不到 JavaScript 输入的自动完成 URL 的价值。有没有办法防止这种情况?我在这里做错了吗?
* 我不能使用 location.hash 作为Fx decodes it。
更新:如果我删除 history.back(1),Chrome 将不再自动完成哈希 (J. Steen's answer)。
【问题讨论】:
标签: javascript url google-chrome hash autocomplete