解决Chrome浏览器自动记录用户名和密码的黄色背景问题和该解决方法与tab切换至下一个input冲突的问题。
哈哈哈,是不是标题很长呀,不逗你们了。其实这么长的标题主要就说了两件事:
第一件:解决Chrome浏览器自动记录用户名和密码的黄色背景问题。
第二件:输入完用户名后按下tab键切换至下一个输入密码input。这个效果和第一件的解决方案有些冲突。这里也用一种简单粗暴的方式解决了。
那我们接下来先解决第一件事:Chrome浏览器自动记录用户名和密码的黄色背景问题。
这个问题我上网查了很多解决方法,大致就是以下几点,那如果就是总结,这篇文章也没有写的必要,问题就在于我试了下文所有的方法,都不好使,所以,我自己想出了解决办法,简单粗暴,请大家耐心看下去:
1.如果想去掉黄色背景,但是保留自动记录用户名和密码的,使用box-shadow,利用阴影可以解决。但是一旦input背景为图片或是透明,那么,这个办法解决不了这个问题。
2.那既然这样,就不要记住密码和用户名了,于是网上又有如下的集中解决方案:
1).通常会在form表单上加入autocomplete="off" 或者 在输入框中加入autocomplete="off"。
2).修改disabled属性:
if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
var inputers = document.getElementsByTagName("input");
for(var i=0;i<inputers.length;i++){
if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
inputers[i].disabled= true;
}
}
setTimeout(function(){
for(var i=0;i<inputers.length;i++){
if(inputers[i].type !== "submit"){
inputers[i].disabled= false;
}
}
},100)
}
3)去除输入框的name和id属性:
if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
var inputers = document.getElementsByTagName("input");
for(var i=0;i<inputers.length;i++){
if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
var input = inputers[i];
var inputName = inputers[i].name;
var inputid = inputers[i].id;
inputers[i].removeAttribute("name");
inputers[i].removeAttribute("id");
setTimeout(function(){
input.setAttribute("name",inputName);
input.setAttribute("id",inputid);
},1)
}
}
}
4)去除输入框的name和id属性:
if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
var inputers = document.getElementsByTagName("input");
for(var i=0;i<inputers.length;i++){
if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
var input = inputers[i];
var inputName = inputers[i].name;
var inputid = inputers[i].id;
inputers[i].removeAttribute("name");
inputers[i].removeAttribute("id");
setTimeout(function(){
input.setAttribute("name",inputName);
input.setAttribute("id",inputid);
},1)
}
}
}
5)可以在不需要默认填写的input框中设置 autocomplete="new-password"
6)修改readonly属性
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
很遗憾的是,上述所有的方法我都试过,真的真的,一个都不好用。。。不知道是我的问题还是怎样,但是那个黄色的背景就是那样碍眼的留在那里,,,但是规划的要求还要完成,怎么办:
先说一下规划的要求吧,不要有黄色背景,记住密码,输完用户名,按tab键让密码输入框自动聚焦。下面说一下思路:
很多网站都会做一个所谓的“假的”输入框放在页面上,但是真的输入框还保留,只是隐藏或者透明度为零等。这个方法就是基于这样一个思维,做了一个假的文本框和一个假的密码框。
假的文本框是把一个div变成可输入的文本框。我们在这里输入好的用户名,在点击失焦或者tab键后,要赋值给下面真正用于的input[type="text"].
但是,密码就不能这么做,因为密码是需要加密的,呈圆点或者星号出现在框里。所以我们需要一个input去放输入好的数字密码,和一个span或者whatever,去放置一个经过转换成为*或者圆点的密码。因为最后我们要提交input[type="password"]的密码,所以 我们需要这个input[type="password"],以position:absolute放置在框里,和负责放置转换成星号的密码重叠在一起。并且这个input[type="password"]要放置在最上面,然后设置一个opacity是零,是的,确实是输入什么都看不见了,但是要的就是这个效果,我们只需要它记住输得密码。真正给使用者们看的则是那个经过转换后的假input。那下面的代码为什么又会有一个假光标呢?那是因为这个input[type="password"]的opacity都为0了,那自然光标也看不到。所以用keyframes,动画仿了一个光标。
HTML代码大致如下:
<form id="loginForm">
<div class="input_outer">
<span class="u_user"></span>
<div class="user-box" contenteditable placeholder="请输入用户名"></div> <--------------这里很重要,contenteditable 一个新h5属性,可以把一个div变成可输入的文本框。我们在这里输入好的用户名,在点击失焦或者tab键后,要赋值给下面的input
<input type="text" name="username" id="username" class="name1" style="display:none;"> <--------------这里的display:none是一个很重要的简单粗暴的点,它可以防止我们按下第一次tab键的时后聚焦在这个input上而密码框并未聚焦。
</div>
<div class="input_outer" style="position: relative;">
<span class="us_uer"></span>
<span class="pass-box" placeholder="${placeholderPassword}"></span> <-------------这里是负责放置密码的。输入的密码会经过js处理后放入到这里,同时这里的宽度逐渐撑开。撑开宽度是为了让下面的“假”光标跟随后移。
<span class="blink"></span> <------------- 这里是假光标
<input type="password" name="password" id="password" class="name2" style="z-index: 100">
</div>
<div class="wrap">
<div id="slider">
<div class="drag_bg"></div>
<div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>
<div class="handler handler_bg"></div>
</div>
</div>
<div class="login_btn"><input type="button" id="login_button" value="登录" onkeydown="LoginSubmit()"/></div>
</form>
js如下:
$(function() {
$(".user-box").bind({
blur :function(){
$("#username").val($(".user-box").text());
},
keydown :function(event){
if (event.keyCode == 13) {
event.preventDefault();
}
}
});
$('.user-box').bind('keyup',function(){
if (event.keyCode == 9) {
$("#password").focus();
$('.pass-box').prop('placeholder','');
$('.blink').addClass('animation');
}else{
var _html = this.innerHTML;
if(_html.length > 20){
this.innerHTML = _html.substr(0,20);
this.blur();
}
}
});
$("#password").bind('blur', function(event) {
$('.blink').removeClass('animation');
});
$("#password").bind('focus', function(event) {
$('.pass-box').attr('placeholder','');
$('.blink').addClass('animation');
});
$("#password").bind('keyup', function(event) {
//让密码以*一个一个显示
var len = $(this).val().length ;
var html = "";
for(var i = 0; i< len;i++){
html += "*";
}
$('.pass-box').html(html);
});
})
是的,整体思路是很麻烦,但是它至少能解决碍眼的黄色背景的问题。
解决Chrome浏览器自动记录用户名和密码的黄色背景问题和该解决方法与tab切换至下一个input冲突的问题。的更多相关文章
- 在Chrome浏览器中保存的密码有多安全?
本文由 伯乐在线 - 黄利民 翻译.未经许可,禁止转载!英文出处:howtogeek.欢迎加入翻译组. [2013-08-09 更新]:最近又开始讨论“Chrome浏览器明文保存密码这个话题了,国外一 ...
- 渗透技巧——导出Chrome浏览器中保存的密码
0x00 前言 在后渗透阶段,获得权限后需要搜集目标系统的信息.信息越全面,越有助于进一步的渗透.对于Windows系统,用户浏览器往往包含有价值的信息. 在之前的文章<本地密码查看工具LaZa ...
- 解决chrome浏览器在win8下没有注册类的问题
解决chrome浏览器在win8下没有注册类的问题 新建一个txt,里面存放代码 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SO ...
- 最简单的解决Chrome浏览器主页被hao123、360和2345篡改的方法是什么
最简单的解决Chrome浏览器主页被hao123.360和2345篡改的方法是什么 一.总结 一句话总结:打开chrome的安装目录,将chrome.exe改成chrome1.exe即可,然后发送一个 ...
- Google chrome浏览器打不开网页,显示ERR_Failed...等问题的解决方法
新装好的win7系统,打开Google浏览器,显示网页可能暂时无法连接,或者它已永久性的移动到了新地址.在网络搜索很多资料,发现解决方法如下,亲测成功. 原因,该服务依赖的TCP/IP 协议有问题. ...
- 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题
解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 如果我们把一个表单设置位 autofocus ,这时这个表单在获取焦点后就会产生淡黄色的背景,我们就是使用!importa ...
- 解决chrome浏览器无法得到window.showModalDialog返回值的问题
父页面处理: function ProductList() { var TypeID = window.document.getElementById("Type").valu ...
- 导出Chrome浏览器中保存的密码
title: 导出Chrome浏览器中保存的密码 date: 2018-02-11 17:54:51 tags: --- 导出Chrome浏览器中保存的密码 先知看到的,挺有意思,记录一下 不同浏览器 ...
- vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上
一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...
随机推荐
- 最小化安装linux CentOS-6.6后 部署fastdfs +下载地址 很干很干的干货
参考:http://blog.itpub.net/7734666/viewspace-1292485/ 安装一些必要软件 yum -y install wget gcc perl mkdir ~/zy ...
- IDEA上使用github上传代码
这里的origin是表示我创建一个名为origin的仓库吗? 早已经存在了,我该怎么删除这个wenda呢? 将它修改为wenda1,如下: 点击项目,右击: 再点击项目,右击,选择commit: 问题 ...
- jQuery命名空间和自定义插件的的多种方法
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- CI框架3.0版本以后,前后台分离的方法。
笔者认为,CI框架官方其实并没有考虑这个前后台分离的问题,所以没有官方的分离方法.而且,2.0版本的分离,也被官方认为这是一个bug.所以在前后台分离这个问题上,其实并不如thinkphp框架. 在C ...
- python矩阵相加
举个栗子: # 两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵: # 使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中. import n ...
- MySQL生成UUID
UUID函数 在MySQL中,可以用uuid()函数来生成一个UUID,如下图: replace函数 默认生成的uuid含有'-',我们可以使用replace函数替换掉'-',SQL如下: selec ...
- 洛谷P4239 【模板】多项式求逆(加强版)(多项式求逆)
传送门 咱用的是拆系数\(FFT\)因为咱真的不会三模数\(NTT\)-- 简单来说就是把每一次多项式乘法都改成拆系数\(FFT\)就行了 如果您还不会多项式求逆的左转->这里 顺带一提,因为求 ...
- 洛谷P3272 [SCOI2011]地板(插头dp)
传送门 感谢大佬的教导->这里 容易注意到,本题的合法路径“L型地板”有一些特殊的地方:拐弯且仅拐弯一次. 这由于一条路径只有两种状态:拐弯过和没拐弯过,因此我们可以尝试着这样定义新的插头: 我 ...
- [Xcode 实际操作]七、文件与数据-(10)NSkeyedArchiver存储和解析数据,Swift对象的归档和恢复归档
目录:[Swift]Xcode实际操作 本文将演示如何使用归档的方法,对模型对象进行持久化工作. 在项目名称上点击鼠标右键,弹出右键菜单,选择[New File]新建文件命令, 在弹出的模板选项窗口中 ...
- 【UVA - 136】Ugly Numbers(set)
Ugly Numbers Descriptions: Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequ ...