【发布时间】:2014-05-03 10:04:00
【问题描述】:
我对这个问题进行了大量研究,但似乎找不到任何可以解决我的问题的方法。
我在表单标签和所有输入标签上都设置了 autocomplete="off",但是 Safari 继续在页面加载时将自动保存的密码输入到我的表单中,这会导致表单上出现不希望的 keydown 事件在我的 JavaScript 中。
有什么想法吗?我已经尝试过各种技巧,比如完全从代码中删除这些输入字段,然后在几秒钟后使用 javascript 和 setTimeout 将它们插入页面,但即使在那之后,Safari 仍然会将其保存的密码输入到我的输入中.
我还尝试在我的 and 标记中使用 autocorrect="off" 和 autocapitalize="off" 属性。
我已经尝试过这样的 Javascript hack(示例):
$(function() {
$('input').attr('autocomplete', 'off');
});
因此加载页面上的每个输入字段都具有此属性,但 Safari 仍会将其保存的密码插入到字段中。
是的,该页面使用的是 html5 文档类型(因为我知道没有它,自动完成功能将无法工作)。
这是我的代码:
- 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"
以上是haml。这是一个红宝石应用程序。它将我的密码插入 :account 输入和 :password 输入。我尝试将我的 :account 输入的“名称”部分包装在跨度标签中,如下所示:
User<span>n</span>ame
因为“名称”字是自动保存密码的触发器,但在尝试解决此问题后,safari 仍会将其保存的密码放入我的表单中。
非常感谢我可以尝试的一些新技巧。到目前为止我为这个问题找到的所有东西,人们只是说“使用自动完成=关闭。”我是,但它不起作用!
另外,我一直在使用 Safari 6.1.2 对此进行测试,但在新旧版本的 Safari 中也证实了这种奇怪的行为。链接到浏览器检查的屏幕截图,所以我知道 autocomplete="off" 属性已正确添加到元素中:http://imgur.com/Sgqn7A4
【问题讨论】:
-
您确定
autocomplete="off"会被添加到最终的 HTML 中吗? -
嗨,是的,当我在 Safari 或任何其他浏览器中检查元素时,我看到元素上的 autocomplete="off" 属性是正确的。浏览器检查截图链接:imgur.com/Sgqn7A4
标签: javascript jquery forms autocomplete safari