禁止自动填充方案

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密码自动填充及浏览器缓存密码账号解决方案相关推荐

  1. 如何关闭win10防火墙_如何让win10家庭版彻底关闭自动更新_禁止win10家庭版自动更新的方法...

    最近有朋友问小编如何让win10家庭版彻底关闭自动更新,对于这个问题,相信很多朋友都不太清楚,在win10家庭版中经常会自动更新,有的朋友不想让系统自动更新,可是又不知道如何才能彻底关闭win10家庭 ...

  2. php怎么清楚浏览器的缓存文件夹,缓存是什么意思?如何清除浏览器缓存?

    本篇文章给大家介绍一下浏览器缓存的知识内容,有兴趣的朋友可以看一下. 缓存是什么意思? 缓存就像复制手中的原件一样,浏览器缓存(Browser Caching)是为了加速浏览,浏览器在用户磁盘上对最近 ...

  3. java 清理页面缓存数据_Web项目中,清理浏览器缓存的几种方式

    在B/S架构的项目中,访问web项目时,往往需要清理浏览器的缓存数据,js ,css 等等. //方法1:在引用的js ,css ,图片,等文件的url 处加一个变量,生成一个随机数字 //方法2:在 ...

  4. html输入框密码颜色,css解决浏览器输入框记住账号密码后的背景色

    谷歌chrome浏览器在用户登录记住密码之后通常会改变input框的背景色,这是每一个程序猿不想看到的事情,下面提出解决这个问题的方法之一:↓ ↓ ↓ css代码: input:-webkit-aut ...

  5. 快速禁止Chrome浏览器缓存

    在前端的开发中,最麻烦的莫过于浏览器的缓存,经常需要清理缓存文件,导致开发效率较低. 但Chrome可以一键禁止浏览器缓存,并且在后续的操作中,无论相同的资源请求多少次,都不会缓存到本地,一起来体验下 ...

  6. 如何不让浏览器读取html缓存,不让浏览器缓存index.html

    参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...

  7. 详解浏览器缓存 前端开发必会

    详解浏览器缓存 缓存可以说是性能优化中简单高效的一种优化方式了.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷. 对于一个数据请求来 ...

  8. 前端缓存(浏览器缓存和http缓存)详解

    web缓存是高级前端工程师必修技能.是我们变成大牛过程中绕不开的知识点. 文章会尽量用通俗易懂的言语来细说web缓存的概念和用处. 本期文章的大纲是 什么是web缓存(前端缓存) 缓存可以解决什么问题 ...

  9. 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程

    搜狗浏览器是一款非常安全的电脑浏览器.该软件能够对用户密码有安全保障,下面小编就为您带来搜狗浏览器保存账号密码教程. 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程 搜狗浏览器怎么保存账号密码 ...

最新文章

  1. 如何使用VB编写Excel的COM组件
  2. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )
  3. 图片→矩阵→空间→坍缩-→质点--用神经网络将空间坍缩成粒子的实验数据汇总
  4. magent实现memcached集群的一个问题
  5. Linux curl命令参数详解--转载
  6. MySQL中使用LIMIT进行分页的方法
  7. 用存储过程还原数据库
  8. 【Qt】QModbusDataUnit类
  9. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(下)V1.0
  10. python list sort by,python中List的sort方法指南
  11. SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区
  12. 【贪心】牛客网:把数组排成最小的数
  13. 生成[1,2,,3,4,5,6,7,8,9]的随机数组?
  14. mysql 纯真ip 导出dat_纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat)
  15. 陈一为担任BCF理事
  16. DefCamp CTF 2122 Rsa-factory 复现笔记
  17. postman(一)常用的Tests方法
  18. 设计一个灵活、通用、方便的权限管理系统
  19. 什么是云?什么是云服务?什么是云计算?
  20. 【VOLTE】【高清语音】什么是高清语音

热门文章

  1. Java五子棋(局域网)
  2. Java 8 新特性 lambda表达式
  3. 《Effective C++》笔记
  4. 淘宝开放平台签名验证失败
  5. byref和byval区别的正确理解
  6. AJAX读取Json文件
  7. 【JS数据结构与算法】双向链表(DoublylinkedList)封装及其方法
  8. HTML把cmyk转换为RGB,CMYK在线转换成pantone色卡号,cmyk转换对应潘通色号
  9. C++主流IDE推荐
  10. Vlan(虚拟局域网配置)