【问题标题】:Autocomplete = "off" cross browser functionality自动完成 =“关闭”跨浏览器功能
【发布时间】:2019-03-31 03:07:03
【问题描述】:

我有一个网站,我需要一些功能:

  • 我的网站上没有自动完成、建议或保存:

    • 任何表单字段都不应自动完成或根据之前的输入提供下拉建议
    • 不应在浏览器中保存/缓存任何表单数据(条目)
  • 防止“溢出”到其他网站:

    • 访问其他网站时,我网站中的数据不应在表单中显示为建议(参考 1b)。

到目前为止,我已经通过在所有表单上使用 autocomplete = "off" 来实现这一点。基于 this link from Mozilla 这本来应该有解决以上所有问题的效果,但是现在一些浏览器开始忽略自动完成属性。上面提到的文章指出,诀窍是为属性分配无效值,例如 autcomplete = "nope"

我的问题是:

Q1:使用 autocomplete = "nope" 的解决方案是否也会阻止缓存/保存数据?

Q2:是否有更好的解决方案来实现我的最佳跨浏览器兼容性标准? (我已经搜索过,但没有找到任何可以给我明确答案的内容)。

【问题讨论】:

    标签: javascript html autocomplete cross-browser


    【解决方案1】:

    最好的解决方案是你提到的输入一个无效值,如here所示。

    在某些情况下,浏览器会继续提示自动完成 即使 autocomplete 属性设置为 off。这 对于开发人员来说,意想不到的行为可能会非常令人费解。诀窍 真正强制执行非自动完成是为 属性,例如:

    autocomplete="nope"
    

    由于该值不是自动完成属性的有效值, 浏览器无法匹配它,并停止尝试自动完成 领域。

    您的数据或缓存不会受此影响,并且根据您的表单内置内容,数据只会通过form 操作或function 处理程序在inputs 上保存。

    另外,我发现输入上的autocomplete= 'new-password' 是可靠的,但是form 包装器上的上述示例比添加到每个input 所需的工作要少得多

    【讨论】:

    • 谢谢。该表单是使用常规 php post 方法(无 Ajax)构建的。使用 autocomplete = "nope" 时,输入中的任何数据是否会保存在浏览器/本地?
    • 此链接 (cloudfour.com/thinks/…) 非常适合阅读该主题。为确保浏览器不保存任何数据,您可以使 input name 变得模糊。例如,电话的input 可以将名称53007478 作为随机字符串,而不是phone。因此,即使数据是由浏览器存储的,浏览器也很难匹配其他地方的值。更多细节可以在这个答案中找到(stackoverflow.com/questions/7223168/…)
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2015-10-31
    • 2012-12-10
    • 2011-02-17
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多