您可能已经知道,Safari 有一个讨厌的自动填充错误,无论您是否设置 autocomplete="off"
,它都会填充电子邮件、用户名和密码字段。
这是一个基本形式:
<form action="/" method="post">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" />
</p>
</form>
…Safari 在页面加载时自动填充这些字段,就像它应该的那样,做得好!
如果将 autocomplete="off"
放入字段和/或表单元素,Safari 仍会自动填充这些字段:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" autocomplete="off" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" autocomplete="off" />
</p>
</form>
即使这样也行不通:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="secretfield1" value="" autocomplete="off"/>
</p>
<p>
<label>Password</label>
<input type="password" name="secretfield2" value="" autocomplete="off" />
</p>
</form>
…因为 Safari 查找那些 <label>
元素,如果它们包含单词“电子邮件”、“密码”等,并继续自动填充。
Aaaahhhhha!,我想,并尝试了这个:
<form action="/" method="post" autocomplete="off">
<p>
<label>%REPLACE_EMAIL_TITLE%</label>
<input type="text" name="%REPLACE_EMAIL_NAME%" value="" autocomplete="off"/>
</p>
<p>
<label>%REPLACE_PASSWORD_TITLE%</label>
<input type="password" name="%REPLACE_PASSWORD_NAME%" value="" autocomplete="off" />
</p>
</form>
…并使用 JavaScript 将 %TAGS% 替换为真实姓名。 Safari 自动填充启动。无论您是否在替换时设置 10 秒超时。
那么,这真的是唯一的选择吗?
<form action="/" method="post" autocomplete="off">
<p>
<label>That electronic postal address we all use, but can't write the title here because Safari fills this with YOUR information if you have autofill turned on</label>
<input type="text" name="someelectronicpostaladdress" value="" autocomplete="off"/>
</p>
<p>
<label>A set of characters, letters, numbers and special characters that is so secret that only you or the user you are changing it for knows, but can't write the title here because Safari sucks</label>
<input type="password" name="setofseeecretcharacters" value="" autocomplete="off" />
</p>
</form>
我希望不是?
更新: @skithund 在 Twitter 中指出, Safari 正在获得 4.0.3 更新,其中提到了“登录自动填充”。有谁知道该更新是否会解决此问题?
原文由 Jari 发布,翻译遵循 CC BY-SA 4.0 许可协议
浏览器忽略
autocomplete=off
的原因是因为有些网站试图禁用自动完成密码。那是错的。
2014 年 7 月,Firefox 是最后一个最终实施更改以忽略任何试图关闭密码自动完成的网站的主要浏览器。
autocomplete=off
时的声明( 存档)任何网站试图规避浏览器偏好的任何尝试都是错误的,这就是浏览器忽略它的原因。没有理由知道为什么网站应该尝试禁用密码保存。
如果我是特殊的 雪花 呢?
有人提出了一个很好的用例:
这并不违反声明:
这是因为在共享信息亭的情况下:
浏览器(共享计算机)要求 不 尝试保存密码。
防止 浏览器 保存密码的正确方法
就是设置 浏览器 不保存密码。
由于您已锁定并控制此信息亭计算机:您可以控制设置。这包括保存密码的选项。
在 Chrome 和 Internet Explorer 中,您可以使用组策略(例如注册表项)配置这些选项。
从 Chrome 政策列表:
请告诉公司经理,试图禁用自动完成密码是错误的。浏览器故意忽略任何试图这样做的人是错误的。那些人应该停止做错事。™
换一种说法
换一种说法:
否决用户的意愿不是你的工作。这是他们的浏览器;不是你的。