禁用Safari 7.0.2密钥链密码保存

时间:2014-03-20 20:54:21

标签: javascript html safari

如何使用html或javascript禁用safari从表单保存用户/传递?
我有这个问题,想出了safari 7.0.2,你可以将用户/传递保存到钥匙串,当你转到同一个表格时,它会自动覆盖这些字段吗?我个人认为这是一种可怕的行为。我不认为应该覆盖领域。

我创建了一个可以在此处演示此问题的独立版本。 http://dev.davidsalazar.com/issues/safari-autofill/

复制步骤(确保使用最新的safari 7.0.2)

  1. 键入和用户/通过单击保存。它应该提示您保存到钥匙串,接受保存。
  2. 现在点击链接加载随机数据,你会发现safari现在将覆盖那些带有你以前保存的字段的字段。

3 个答案:

答案 0 :(得分:0)

解决方法:创建另一个(假的)密码字段,Safari可能会被它弄糊涂 - 在这种情况下自动填充将被“禁用”

在Safari 7.0.2和7.0.3中测试

演示(使用红色假密码):http://js.pejsa.info/~jam/safari-autofill/

<form method="post" autocomplete="off"> <input type="text" name="username" id="username" value="abc" /> <input type="password" name="password" id="password" value="def" /> <input type="submit" name="submit_btn" value="Save" /> <input type="password" id="fakePassword" style="border:0;width:10px;height:10px;background-color:red;" /> </form>

答案 1 :(得分:0)

由于所有浏览器中的新行为而无法实现 - 自动完成=&#34;关闭&#34;现在被忽略了

有关详细信息,请参阅http://raesene.github.io/blog/2014/04/17/changing-times-the-end-of-autocomplete-equals-off/

答案 2 :(得分:0)

我在白天为我的项目搜索这个问题。最后我在下面找到了解决方案机智插件。

这样的插件工作结构。它得到你的输入并克隆它。 使用此克隆并创建相同的输入属性并将其克隆为另一个隐藏的输入。之后删除原始输入并将隐藏和克隆的输入放在同一位置。

这是理由。当页面加载并通过DOM映射时,现代浏览器(具有钥匙串)控制输入(类型密码)。页面加载插件后获取输入并克隆并删除原始输入。此操作会更改DOM映射。因此,当页面重定向时,浏览器无法访问此控件。所以不建议你保存密码。

您可以使用此插件解决此问题。

注意:

  1. 如果你使用像我这样的其他插件。例如,用于密码安全输入的jquery-keyboard插件。你应该修改你的initkeyboard方法。因为键盘控制您的输入和初始接近此输入。您可以更改此init方法,如下所示
  2. 初始化键盘改变

    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">
    
    1. 如果您有任何按键或keydown事件初始化此输入,请在插件init之后放置此代码。因为这个插件改变了DOM映射
    2. 此插件用法如下所示

      $('input[type=password]').disableAutocomplete();
      

      这是创造者解释

        

      此jQuery插件强制执行autocomplete = off HTML属性   密码(和其他)字段。最近的浏览器选择忽略   此属性有利于用户首选项。但是,一些财务   (和其他)机构可能有充分的理由来执行此操作   实践。

           

      jQouery Disable AutoComplete


      旧评论 我有一个包含2个输入的页面。其中一个输入类型密码,其他文本(用户名密码形式)。 Safari无法使用autocomplete =“off”。我用这个问题有两个内联隐藏输入。这些输入具有通用名称,如下所示。我的原始用户名密码输入具有不同的名称,因此Safari首先查找用于获取或设置这些输入的钥匙串。您可以使用此解决方案来阻止Safari使用安全页面的钥匙串。

      <input type="text" name="Username" style="display:none;"/>
      <input type="password" name="Password" style="display:none;" />