避免浏览器自动填充表单的解决方式

  以前在做项目的时候遇到过这个问题,当时年少太轻狂,没有想过是为什么会发生这样的问题,只觉得作为一个用户,每次在登录网站的时候很有用,很便捷,甚至觉得这个自动填充功能,嗯, 真棒!但是,这次又遇到了这个问题,我不禁陷入了沉思。。。为什么会有自动填充呢?为什么会变成黄色框框呢?作为一个开发者,在我不需要它自动填充的时候,它真的,很碍事!

  于是乎~各种谷歌百度,试了一堆方法,终于让我解决了这个问题!!!

  首先,在浏览器有点击过记住密码的操作的前提下,在直接写两个input,type分别等于text和password的情况下,它就会变成这个样子:

  借别人的文,发现是在以下情况下会自动填充用户和密码信息:

    1、在用户和密码包含在form的情况下,同时包含一个 type="text"和 type="password"元素且不包含readonly和disabled属性,两个元素可以没有name和id属性

    2、在没有form的情况下,同时包含一个 type="text"和 type="password"元素且不包含readonly和disabled属性,且两个元素至少都有name或id属性(但name和id可以是任意值但不能是空或空格)。

  当然,这两种方式我就不一一验证了, 不废话,我们直接看解决方式,共两种:

  1、添加input隐藏框来填充

 1 <input name="old-userName" type="text">
 2 <input name="old-pwd" type="password">
 3 <ul class="ul-info">
 4     <li><label>账号:</label>
 5           <input id="userName" type="text">
 6     </li>
 7     <li><label>密码:</label>
 8       <input class="0" type="password">
 9     </li>
10 </ul>

  这种方式是百度了很多,最终发现真心有效的一种方式,呈现如下图:

  

  需要注意几点的是:  

    1、我们写了两个input框来让浏览器自动填充,这两个input必须是放在用户真实输入的input框的前面;

    2、自动填充的input框需要设置display:  none;的样式;

    3、自动填充的input框需要有设置一个name或者是id(class不行偶~~), 否则会出现这种情况:type=‘text‘正常,type=‘password‘随便focus一个都会有密码提示

  2、修改选择器

1 <li><label>账号:</label>
2<input id="a" type="text">
3</li>
4<li><label>密码:</label>
5    <input type="password">
6</li>

  这种方式是我自己闲着无聊,试着玩儿试出来的,感觉这种方式还是比较合理的,毕竟DOM那么金贵,不需要多余的input,这种方式需要注意的几点就是:

    1、一定要给type=‘text‘一个id;

    2、type=‘password‘不能有id或者name(有其一都会导致自动填充),可以有class;

    3、目测这种方式在360上行不通,谷歌没有问题,谨慎;

  3、使用js控制

  这方式我就不多加介绍了,网上可以找到,文章最底部也有链接可以查看,我也不是太提倡。

  看着干干净净的输入框,我的内心毫无波澜~~~

  附加一个小提示:如果只是想要去掉那个黄色的背景保留填充的值的话,以下两种css样式取其一,都是可以做到的,因为我们改的样式不在用户代理样式表里面。

1 input:-webkit-autofill {
2     -webkit-box-shadow: 0 0 0 1000px white inset !important;
3 }
4 input:-webkit-autofill {
5   transition: background-color 5000s ease-in-out 0s;
6 }

  

参考自:huangtailang的博客

时间: 2024-08-08 09:29:28

避免浏览器自动填充表单的解决方式的相关文章

前端开发入门到实战:css实现修改浏览器自动填充表单的默认样式

当表单中存在input[password]的时候,采用submit方式提交.就会触发浏览器自动填充表单.比如chrome自动填充后,淡×××输入框代替了背景样式,看起来有些怪异. ?那么如何通过css实现取消浏览器自动填充表单的默认样式呢? 解决方法一: 当input文本框是纯色背景的,可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的×××背景:如: input:-webkit-autofill { -webkit-box-shadow: 0 0

web前端入门到实战:css实现修改浏览器自动填充表单的默认样式

当表单中存在input[password]的时候,采用submit方式提交.就会触发浏览器自动填充表单.比如chrome自动填充后,淡慌色输入框代替了背景样式,看起来有些怪异. 那么如何通过css实现取消浏览器自动填充表单的默认样式呢? 解决方法一: 当input文本框是纯色背景的,可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的慌色背景:如: web前端开发学习Q-q-u-n: 767273102 ,分享学习的方法和需要注意的小细节,不停更新最新

禁用浏览器自动填充表单解决办法

我们知道一般浏览器自动为我们填充用户名密码,单身有的时候我们不需要,那么要怎么做呢? 当你设置属性autocomplete=“off”后会发现然并卵,那么我们就自己动手写js搞定他,实现如下: js全局变量: var pw;//密码框 var un;//用户名框 var pwName;//密码框名称 var unName;//用户名框名称 在页面ready事件里面写 -------------- pwName = pw.attr("Name"); unName = un.attr(&q

阻止360浏览器自动填充表单

if( window.chrome && window.chrome.webstore && Object.keys(window.chrome.webstore).length < 3 ){ //判断是否360浏览器 $(':text', ':password').each(function(){ //遍历不需要自动填充的元素 //复制该元素(this.outerHTML)并添加到后面,然后隐藏该元素并置name属性为空 //只能隐藏而不能使用remove方法去除该

用chrome浏览器实现手动“自动填充表单”

原文地址:http://blog.csdn.net/ffb/article/details/38559655 现在的浏览器基本都有自动填充表单的功能,可以极大的节约我们填写一些常见表单,尤其是登录表单的填写时间. 但是现在随着用户需求的不断发展,很多网页都是使用js来实时进行表单提交的操作,这些操作可能根本不涉及实际的submit操作,所以不会被浏览器截获并记录,这个时候面对一些需要反复重复填写的常见的表格就很郁闷了. 不过还好,这种情况依然是可以实现手动"自动填充表单"的,方法就是利

去掉chrome记住密码后自动填充表单的黄色背景

chrome 表单自动填充后,input文本框的背景会变成黄色的,通过审查元素可以看到这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: input : -webkit-autofill { background-color : #FAFFBD ; background-image : none ; color : #000 ; } 在有些情况下,这个黄色的背景会影响到我们界面的效果,尤其是在我们给input文本框

网页自动登录,自动填充表单代码

实现自动登录某网站,并且登录完成后跳转到指定的页面.然后进行表单的自动填充表单提交 .类型于小型的发帖机 哈哈 (看官在看下面代码的时候,把记得把下面的链接改下) public partial class Form1 : Form { public Form1() { InitializeComponent(); webBrowser1.Navigate("www.tiantianit.com"); } private void webBrowser1_DocumentComplete

网页自动填充表单

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: UIBarButtonItemStyle.Plain, target: self, action: "autoFill") /// 自动填充用户信息 @objc private func autoFill() { let js = "document.getElementById('userId').value

如何禁止浏览器自动填充

本文由 Deguang 发表于 码路-技术博客 浏览器的保存账户密码功能,给我们带来了很大的便利,但是在有些情况下,我们并不希望浏览器帮我们填充一些表单,然而autocomplete的一些参数项并不能阻止浏览器回填,这里我们来看下如何解决这个问题. 问题描述: 项目注册部分的表单有三项,分别为手机号.验证码和密码,当完成注册操作后,浏览器提醒是否保存密码,用户名部分显示的是验证码,点击保存后,打开登录页面,手机号和密码项被分别填充为了验证码和密码,给用户带来了一定的不便. 解决过程: 1. 第一