2011-05-13 75 views
2

我在Chrome(和Safari)中遇到了一些哈希问题。我使用散列来存储搜索字符串并将其更新为输入。所以,我只加1分进入到每次搜索历史,我更换,因为它的真实键入当前历史记录条目。*停止Chrome自动完成网址哈希?

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),现在开始寻找搜身/#!search/frisking),Chrome会自动完成有益向/#!search/fr/#!search/frog。大多数情况下,对于想要链接到特定搜索的用户来说,这只是令人困惑,但有时候,Chrome会在确定搜索字词看起来像其他页面的散列时,启动了网站的单独部分。

Chrome自动填充的东西,我键入通常是非常有用的,但我只是看不到由JavaScript输入的自动完成网址的价值。有没有办法预防这种情况?我在这里做错了什么?

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

更新:如果我删除history.back(1),Chrome不再自动完成散列(J. Steen's answer)。

回答

2

我见过这种技术的几个网站实施,使用延迟输入,以便该位置只在用户停止键入500毫秒后更新。这样,只有一个历史记录条目。与此同时,页面和搜索结果在用户通过例如打字键盘输入时立即更新。阿贾克斯。

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

+0

感谢您的想法。当然,如果有人打字速度慢,它就不起作用,但它可能足够好。有趣的是,我发现(在尝试建议的网站之后),如果我删除history.back(1),那么Chrome不会自动填充URL,这对我来说似乎是一个错误。 – meloncholy 2011-05-13 16:57:17

+0

奇怪。但有一点要记住。 =) – 2011-05-20 09:14:54

+0

我在办公室呆了几天,但现在我已经完成了这个任务,直到Chrome(希望)得到修复后,确实看起来确实够好。 :) 再次感谢! – meloncholy 2011-05-24 15:15:00