Javascript 禁用Safari 7.0.2钥匙链密码保存
如何禁止safari使用html或javascript保存表单中的用户/密码?Javascript 禁用Safari 7.0.2钥匙链密码保存,javascript,html,safari,Javascript,Html,Safari,如何禁止safari使用html或javascript保存表单中的用户/密码? 我遇到了safari 7.0.2中出现的这个问题,您可以将用户/密码保存到密钥链,当您转到同一表单时,它会自动覆盖这些字段?我个人认为这是一种可怕的行为。我认为字段永远不应该被覆盖 我已经创建了一个独立的版本,您可以在这里演示这个问题。 复制步骤(确保使用最新的safari 7.0.2) 键入并单击“用户/通过”保存。它应该提示您保存到keychain,并接受保存 现在单击LoadRandom data链接,您会注
我遇到了safari 7.0.2中出现的这个问题,您可以将用户/密码保存到密钥链,当您转到同一表单时,它会自动覆盖这些字段?我个人认为这是一种可怕的行为。我认为字段永远不应该被覆盖 我已经创建了一个独立的版本,您可以在这里演示这个问题。 复制步骤(确保使用最新的safari 7.0.2)
解决方法:创建另一个(假)密码字段,Safari可能会被它弄糊涂-在这种情况下,自动填充将被“禁用” 在Safari 7.0.2和7.0.3中测试 演示(使用红色假密码):
由于所有浏览器中都有新的行为,因此无法执行此操作-autocomplete=“off”现在被忽略
有关详细信息,请参见我在当天之前为我的项目搜索此问题。最后我找到了下面插件的解决方案 这个插件的工作结构是这样的。它获取您的输入并克隆它。 使用此克隆并创建相同的输入属性,然后将其克隆到另一个隐藏输入。然后移除原始输入,并将隐藏输入和克隆输入放在同一位置 这就是为什么。在DOM上加载和映射页面时,现代浏览器(具有钥匙链)控制输入(键入密码)。页面加载后,插件获取输入,克隆并删除原始输入。此操作将更改DOM映射。因此,当页面重定向时,brovser无法访问此控件。所以不要建议你保存密码 您可以使用此插件解决此问题 注:
var _inputwidth = $(elm).parent().find('input').width();
之后
var_inputwidth=$(elm).parent().find('input[type=text],input[type=password]).width()
因为插件输出是这样的
<input type="hidden" id="txtPass" name="txtPass" spellcheck="false" autocomplete="off">
<input type="text" id="txtPass" name="txtPass" spellcheck="false" autocomplete="off">
这是造物主的描述
此jQuery插件在上强制执行autocomplete=off HTML属性
密码(和其他)字段。最近的浏览器选择了忽略
此属性有利于用户首选项。然而,一些金融机构
(和其他)机构可能有充分的理由执行这一规定
练习
老话 我有一个有2个输入的页面。其中一个输入类型为密码,另一个输入类型为文本(用户名-密码形式)。Safari不能与autocomplete=“off”一起使用。对于这个问题,我使用两个内联隐藏输入。这些输入的通用名称如下所示。我最初的用户名密码输入有不同的名称,所以Safari首先会寻找一个钥匙链来获取或设置这些输入。您可以使用此解决方案防止Safari使用密钥链保护您的安全页面
<input type="text" name="Username" style="display:none;"/>
<input type="password" name="Password" style="display:none;" />
你说得对,在他们修复之前,这是一个很好的攻击。我在虚拟密码中使用这些样式<代码>显示:内联;宽度:0;身高:0;边界:0代码>我仍然不敢相信他们safari还没有修复这个bug lol。这是他们的问题。
<input type="text" name="Username" style="display:none;"/>
<input type="password" name="Password" style="display:none;" />