填写Safari 7
我试图找到一种方法让Safari 7(测试版本7.0.2,7.0.3)尊重autocomplete =“off”属性。 无论我尝试什么,它都会继续自动填充。
这是我们设置新用户的管理页面中的一个问题。 我们的用户使用他们自己的用户名/密码继续保存。
以下是我们使用的缩略版本。 我尝试将字段重命名为“xxu”和“xxp”,但自动填充似乎读取标签标题。 我迷上了各种不同的标签,但它仍然以某种方式触发自动填充。
<form novalidate autocomplete="off">
<div class="control-group">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" name="xxu" autocomplete="off" required="required">
</div>
</div>
<div class="control-group">
<label class="control-label">Username</label>
<div class="controls">
<input type="password" name="xxp" autocomplete="off" required="required">
</div>
</div>
</form>
我在Apple的网站上找到了描述这个问题的文章。 https://discussions.apple.com/message/25080203#25080203
有没有人知道任何其他方法禁用Safari 7中的表单自动填充? (唉,这是我们对IE的期望)
谢谢您的帮助。
最近我们遇到了同样的问题。 最重要的是,我们对Blur上的表单进行了AJAX验证。 出于某种奇怪的原因,这会触发Safari再次自动填充我们的电子邮件输入字段。 因此,每当您填写您想要的电子邮件时,Safari都会填写一封电子邮件,而不是它的首选。 无法通过我们的形式。
我们的方案
几乎是打破了Safaris(和Chromes)的自动填充算法。
HTML:
<div class="douchebag_safari">
<input class="js-clear_field" tabindex="-1" name="e-mail" type="email">
<input class="js-clear_field" tabindex="-1" name="Ecom_User_Password" type="password">
</div>
CSS:
.douchebag_safari {
position: fixed;
width: 1px;
left: -50px;
}
.douchebag_safari input {
width: 1%;
}
JS:
$('#form').on('submit', function () {
"use strict";
$('.js-clear_field').attr('disabled', 'disabled');
}
它的主要特点是:我们把类型为电子邮件和密码的输入字段放在搜索自动填充算法中排名较高(或相同)的名称,并将它们隐藏在屏幕之外。 OnSubmit,这些字段将被禁用,因此将从POST中排除到我们的后端。
缺点是用户在我们的表单上没有自动完成功能,但我们认为在我们的情况下它是值得的。
注意(假设你很在意):禁用Javascript的用户仍然会将这些字段包含在他们的POST中。 根据您的设置,您需要允许这两个字段通过您的后端来防止错误。 只是为了安全起见,请确保你对这些领域没有做任何事情!
作为奖励,这解决了Chrome(35)认为密码字段上方的输入字段是用户名的错误。 在我们的例子中,这是一个数字字段,给出了奇怪的用户体验和错误。
我采用了@Skurpi提出的douchebag_safari方法的简化变体。 它只是HTML,并在我的表单的底部。
<!-- http://stackoverflow.com/questions/22817801/how-to-disable-auto-fill-in-safari-7 -->
<div class="douchebag_safari" style="left: -9999px; position: fixed; width: 1px;">
<input type="password">
</div>
我发现了一种更快更简单的方法来避免表单自动完成。 它适用于Mac上的FF 27,Chrome 36和Safari 7.0.5。 我还没有在其他操作系统中测试过它。
我只是把虚假的字段放在我的表单中的第一位,不需要标签或ID和名称属性。 我用一种内联风格隐藏它,并且瞧!
<input type="password" style="display: none">
我的表单中的电子邮件和密码字段按预期填充了数据库中的值,并且不再自动完成。
说实话,我不喜欢这个解决方案......我很想找到一个兼容的标准解决方案,但似乎autocomplete =“off”不再工作。
链接地址: http://www.djcxy.com/p/26453.html上一篇: fill in Safari 7
下一篇: Removing input background colour for Chrome autocomplete?