【问题标题】:Stop Chrome autocompleting URL hashes?停止 Chrome 自动完成 URL 哈希?
【发布时间】: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


    【解决方案1】:

    我见过一些网站实施了这种技术,在输入中使用延迟,以便仅在用户停止输入 500 毫秒后更新位置。这样,只有一个历史条目。同时,页面和搜索结果会在用户通过例如输入时立即更新。 ajax。

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

    【讨论】:

    • 感谢您的想法。当然,如果有人打字慢,它就行不通,但它可能已经足够好了。有趣的是,我发现(在尝试了您建议的网站之后)如果我删除 history.back(1),Chrome 不会自动完成 URL - 对我来说似乎是一个错误。
    • 奇怪。但要记住一些事情。 =)
    • 我已经离开办公室几天了,但我现在已经完成了,在 Chrome(希望)得到修复之前,它确实看起来已经足够好了。 :) 再次感谢!
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2014-06-26
    相关资源
    最近更新 更多