【问题标题】:Forcing autocomplete off [duplicate]强制关闭自动完成[重复]
【发布时间】:2014-06-18 11:49:36
【问题描述】:

我的问题是当有一个预填充的输入字段时,Safari 会覆盖该值。 Chrome 似乎运行良好。

这是我尝试过的:

<input autocomplete="off" type="email" id="email" name="email" value="someemail@email.com">

但 Safari 自动填充管理器仍会使用自动填充管理器已保存的内容覆盖“someemail@email.com”。

我在互联网上搜索过,显然autocomplete="off" 在大多数浏览器中不再适用,即使我使用的是 HTML5。这是真的还是有解决办法?

【问题讨论】:

    标签: html input


    【解决方案1】:

    我认为最跨浏览器的方法是通过将控件名称与特定于会话的数据连接来“随机化”控件名称的一部分,尽管在服务器端有点痛苦。

    因此,在呈现您的字段之前,将名称与随机值(如哈希甚至时间戳)连接起来,以获得如下内容:

    <input type="email" id="email" name="email20140618135501.255" value="someemail@email.com">
    

    最重要的是将此值存储在会话变量中,这样您就可以在每个字段上使用相同的值,但最重要的是您可以在 POST 请求后使用它来获取该字段的值。

    但请务必注意,除非您知道自己正在处理敏感信息,否则不应代表您的用户选择是否使用自动完成功能...或者按照 Colin 的建议,如果您确定自动完成功能在该领域可能完全没用,甚至会适得其反。

    【讨论】:

    • 这是一个好方法。值得注意的是,“代表您的用户进行选择”比看起来要复杂得多。假设您正在构建管理面板或 CRM 系统。您的用户将维护大量其他人的电子邮件地址。他们最不想看到的就是浏览器自动完成他们的自己的电子邮件地址,这可能会覆盖表单中已有的数据。
    • 我同意你的观点,科林并以这种方式修改了我的答案。您描述的情况确实是选择在该字段上关闭自动完成功能的好方法。请注意,此类用户也可能会自行禁用自动完成功能,但在这种情况下,也会在他们可能需要的其他网站上禁用它:-)
    • @ColinPickard 你是正确的。这是用于管理员浏览不同用户信息并编辑其信息的后端。
    猜你喜欢
    • 2018-01-13
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2013-03-29
    • 2016-12-07
    相关资源
    最近更新 更多