html 自动填充缓存,禁止input密码自动填充及浏览器缓存密码账号解决方案
禁止自动填充方案
readonly οnfοcus="this.removeAttribute('readonly')"
这方案亲测有效,简单直接,把上面代码直接复制放到input标签就上就行。
ps:现有的网上多数加隐藏input获取值,都是解决默认填充的,而剩下的方案都是只能实现部分功能。
但是这个方案 如果使用password还是会引起浏览器提醒是否保存密码,并不能禁用缓存,只能不自动把账号密码填充进去。
为了,当type="password"的时候,做了以下测试:
动态设置,初始化为了text,输入之后变为password。失败:在谷歌上,只要设置过password这个input就能引起浏览器反应(出现钥匙的标签,继而提交的时候弹出提示)。
因为是input为空的时候,钥匙会消失。输入值就会出现,并且js操作的值和初始化值的不会出现钥匙,所以能不能把这个动作禁止了,浏览器接受不到就不出现。按照DOM事件的思路,禁用了input的所有事件的冒泡,默认事件,无效。失败:完全不知道浏览器是怎么触发得。
继而放弃禁止出现钥匙,那么表单提交动作浏览器能不能禁止,一堆操作禁止,失败:同2一样浏览器并不是在事件机制接受到的触发,或者是在我们事件机制之前?不得而知
至此,原生的passwraod已经没有思路来解决这个问题(如果有请留言,作者尝试后更新文章),那么我们就来打造了一个password。
首先,什么都不说,直接上解决方案。
第一步:引入js
; (function (name, definition) {
if (typeof define === 'function') {
define(definition)
} else if (typeof module !== 'undefined' && module.exports) {
module.exports = definition()
} else {
this[name] = definition()
}
})('Text2Password', function () {
function Text2Password(opts) {
let { id, callback = () => { } } = opts, input = document.getElementById(id), _this = this;
_this._value = [], _this.input = input, _this.callback = callback;
input.addEventListener("copy", Text2Password.preventDefault)
input.addEventListener("cut", Text2Password.preventDefault)
input.addEventListener("paste", Text2Password.preventDefault)
input.addEventListener("input", _this.passwordHandler.bind(_this))
this.init();
Object.defineProperty(_this, "value", {
get: function () {
return _this._value.join("")
},
})
return this
}
Text2Password.preventDefault = function (e) {
var e = e || window.event;
e.preventDefault();
}
Text2Password.prototype.init=function(){
this.input.value.split("").forEach(function(value){
this._value.push(value)
}.bind(this))
this.input.value = new Array(this._value.length).fill("*").join("");
}
Text2Password.prototype.passwordHandler = function () {
var cursor = this.input.selectionStart, cvalue = this.input.value.split(''), ovalue = this._value;
var changeLen = cvalue.length - ovalue.length;
if (changeLen > 0) {
// changeLen 如果是正数 说明新数据的长度比旧数据长 所以曾嘉乐数据
ovalue.splice(cursor - 1, 0, ...cvalue.slice(cursor - 1, cursor - 1 + changeLen))
}
if (changeLen < 0) {
// 删除某些元素
ovalue.splice(cursor, Math.abs(changeLen))
}
cvalue.forEach(function (value, index) {
if (value != "*") {
ovalue[index] = value;
}
})
this.input.value = new Array(cvalue.length).fill("*").join("");
this.input.selectionStart = cursor;
this.input.selectionEnd = cursor;
typeof this.callback == "function" && this.callback();
}
return Text2Password
})
第二步:初始化。
第一:注意我们这个input的type是text,但是会转化为跟password一样的表现。
第二:因为是单对单,所以只支持传入id
第三:获取input的value,需要通过password.value.或者通过callback设置隐藏input的值直接提交表单。
var password = new Text2Password({
id: "password",
callback: function () {
console.log(this.value)
}
});
password.value //
已实现功能:input内容显示为*(目前没设置传参,如果需要直接代码中修改),并且直接通过dom获取也是*,突然感觉信息好像安全了很多。
禁止复制粘贴剪切。
可以在任意位置增删或者选中替换。
end,如果有更好的方法,或者上述代码有bug,请留言一起交流。
html 自动填充缓存,禁止input密码自动填充及浏览器缓存密码账号解决方案相关推荐
- 如何关闭win10防火墙_如何让win10家庭版彻底关闭自动更新_禁止win10家庭版自动更新的方法...
最近有朋友问小编如何让win10家庭版彻底关闭自动更新,对于这个问题,相信很多朋友都不太清楚,在win10家庭版中经常会自动更新,有的朋友不想让系统自动更新,可是又不知道如何才能彻底关闭win10家庭 ...
- php怎么清楚浏览器的缓存文件夹,缓存是什么意思?如何清除浏览器缓存?
本篇文章给大家介绍一下浏览器缓存的知识内容,有兴趣的朋友可以看一下. 缓存是什么意思? 缓存就像复制手中的原件一样,浏览器缓存(Browser Caching)是为了加速浏览,浏览器在用户磁盘上对最近 ...
- java 清理页面缓存数据_Web项目中,清理浏览器缓存的几种方式
在B/S架构的项目中,访问web项目时,往往需要清理浏览器的缓存数据,js ,css 等等. //方法1:在引用的js ,css ,图片,等文件的url 处加一个变量,生成一个随机数字 //方法2:在 ...
- html输入框密码颜色,css解决浏览器输入框记住账号密码后的背景色
谷歌chrome浏览器在用户登录记住密码之后通常会改变input框的背景色,这是每一个程序猿不想看到的事情,下面提出解决这个问题的方法之一:↓ ↓ ↓ css代码: input:-webkit-aut ...
- 快速禁止Chrome浏览器缓存
在前端的开发中,最麻烦的莫过于浏览器的缓存,经常需要清理缓存文件,导致开发效率较低. 但Chrome可以一键禁止浏览器缓存,并且在后续的操作中,无论相同的资源请求多少次,都不会缓存到本地,一起来体验下 ...
- 如何不让浏览器读取html缓存,不让浏览器缓存index.html
参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...
- 详解浏览器缓存 前端开发必会
详解浏览器缓存 缓存可以说是性能优化中简单高效的一种优化方式了.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷. 对于一个数据请求来 ...
- 前端缓存(浏览器缓存和http缓存)详解
web缓存是高级前端工程师必修技能.是我们变成大牛过程中绕不开的知识点. 文章会尽量用通俗易懂的言语来细说web缓存的概念和用处. 本期文章的大纲是 什么是web缓存(前端缓存) 缓存可以解决什么问题 ...
- 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程
搜狗浏览器是一款非常安全的电脑浏览器.该软件能够对用户密码有安全保障,下面小编就为您带来搜狗浏览器保存账号密码教程. 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程 搜狗浏览器怎么保存账号密码 ...
最新文章
- 如何使用VB编写Excel的COM组件
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )
- 图片→矩阵→空间→坍缩-→质点--用神经网络将空间坍缩成粒子的实验数据汇总
- magent实现memcached集群的一个问题
- Linux curl命令参数详解--转载
- MySQL中使用LIMIT进行分页的方法
- 用存储过程还原数据库
- 【Qt】QModbusDataUnit类
- 数据结构与算法(C#版)第二章 C#语言与面向对象技术(下)V1.0
- python list sort by,python中List的sort方法指南
- SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区
- 【贪心】牛客网:把数组排成最小的数
- 生成[1,2,,3,4,5,6,7,8,9]的随机数组?
- mysql 纯真ip 导出dat_纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat)
- 陈一为担任BCF理事
- DefCamp CTF 2122 Rsa-factory 复现笔记
- postman(一)常用的Tests方法
- 设计一个灵活、通用、方便的权限管理系统
- 什么是云?什么是云服务?什么是云计算?
- 【VOLTE】【高清语音】什么是高清语音