停止Chrome自动填充网址哈希?

时间:2011-05-13 12:15:28

标签: javascript url google-chrome hash autocomplete

我在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会根据我的浏览历史记录自行更改网址。因此,如果我之前搜索了青蛙/#!search/frog),现在开始搜索 frisking /#!search/frisking),则Chrome会自动完成{{{ 1}}到/#!search/fr。对于想要链接到特定搜索的人来说,这大多只会让人感到困惑,但有时Chrome会在确定搜索字词看起来像其他页面的哈希值时启动了网站的单独部分。

我输入的Chrome自动填充功能通常非常有用,但我无法看到JavaScript输入的自动填充网址的价值。有没有办法阻止这种情况?我在这里做错了吗?

*我无法将location.hash用作Fx decodes it

更新:如果我删除/#!search/frog,则Chrome不再自动填充哈希值(J. Steen's answer)。

1 个答案:

答案 0 :(得分:2)

我见过这种技术实现的几个站点,在输入中使用延迟,这样只有在用户停止输入500毫秒之后才会更新位置。这样,只有一个历史条目。同时,当用户通过例如用户键入时,页面和搜索结果立即更新。 AJAX。

http://www.prisjakt.nu是一个利用此策略的瑞典网站。

相关问题