Safari保存的密码在表单中覆盖autocomplete ="off"

use*_*940 6 javascript forms safari jquery autocomplete

我已经对这个问题做了大量的研究,但我似乎无法找到解决我问题的任何东西.

我在表单标签上设置了autocomplete ="off",以及我的所有输入标签,但Safari继续在页面加载时将自动保存的密码输入到我的表单中,这导致我的JavaScript中的表单上出现了不需要的keydown事件.

有什么想法吗?我已经尝试过各种各样的黑客攻击,比如完全从代码中删除那些输入字段,然后使用javascript和setTimeout在几秒钟后将它们插入到页面中,但即便在Safari之后仍然将其保存的密码输入到我的输入中.

我也尝试在my和tags中使用autocorrect ="off"和autocapitalize ="off"属性.

我尝试过像这样的Javascript黑客(例子):

$(function() {
    $('input').attr('autocomplete', 'off');
});
Run Code Online (Sandbox Code Playgroud)

因此,加载页面上的每个输入字段都具有此属性,但Safari仍将其保存的密码插入字段中.

是的,该页面使用的是html5 doctype(因为我知道如果没有它,自动完成将不起作用).

这是我的代码:

  - form_for @website, :html => {:class => 'fields', :autocomplete => 'off'}, :url => {:controller => 'signup', :action => 'connect'} do |form|
    %h3 Enter URL
    %ol.fields
      %li
        = form.label :url, "Website URL:"
        = form.text_field :url, :placeholder => "Website URL", :autocomplete => "off", :class => "website_url"
    %h3 Enter Credentials
    - form.fields_for :authentication do |aa|
      %ol.fields
        %li
          = aa.label :hostname, "SFTP/FTP Server:"
          = aa.text_field :hostname, :placeholder => "SFTP", :autocomplete => "off"
        %li
          = aa.label :account, "Username:"
          = aa.text_field :account, :placeholder => 'Username', :autocomplete => "off"
        %li
          = aa.label :password, "Password:"
          = aa.password_field :password, :placeholder => 'Password', :autocomplete => "off"
Run Code Online (Sandbox Code Playgroud)

以上是haml.这是一个红宝石应用程序.它将我的密码插入:帐户输入和:密码输入.我试过在span标签中包装my:account输入的'name'部分,如下所示:

User<span>n</span>ame
Run Code Online (Sandbox Code Playgroud)

因为'name'这个词是自动保存密码的触发器,但是在尝试解决这个问题后,safari仍会将保存的密码丢入我的表单中.

我非常感谢我可以尝试的一些新技巧.到目前为止我发现的所有问题,人们只是说"使用自动完成="关闭."我,但它不起作用!

此外,我一直在使用Safari 6.1.2对此进行测试,但是已经使用旧版本和新版本的Safari确认了这种奇怪的行为.链接到浏览器检查的屏幕截图,所以我知道autocomplete ="off"属性正确添加到元素:http://imgur.com/Sgqn7A4

t_i*_*chy 6

看起来像Safari,其他人决定停止尊重这个属性.

https://discussions.apple.com/message/25149138#25149138

http://blog.gerv.net/2013/10/ie-11-ignoring-autocompleteoff

// Override Safari, Chrome and IE11 decision to ignore autocomplete: off
// on form you wish to skip autocomplete, change all password fields to type=private
// requires jQuery

$(function() {
  $('input[type="private"]').focus(function(e){
    $(this).prop('type', 'password');
  });
  $('input[type="private"]').parents('form').submit(function(){
    $(this).find('input[type="password"]').hide().prop('type', 'private');
  });
});
Run Code Online (Sandbox Code Playgroud)