js解決ページログイン時にブラウザがパスワードを保存するかどうかを注意することを禁止するシナリオ
4225 ワード
主な考え方
1.input入力ボックスを通じて、入力値を傍受し、*記号に置き換え、
1.input入力ボックスを通じて、入力値を傍受し、*記号に置き換え、
input
のtype="password"
タイプを使用することを避け、ブラウザがパスワードを覚えているかどうかを注意する.vue、reactなどの項目なら自分でコードを改造してください!
Document
$(document).ready(function () {
var inputEle = $('#inputText');
inputEle.on("keydown", handlerKeydown);
inputEle.on("input", handlerPassword);
var cursorStart = 0;
var cursorEnd = 0;
function handlerKeydown() {
cursorStart = inputEle[0].selectionStart;
cursorEnd = inputEle[0].selectionEnd;
console.log(cursorStart,cursorEnd)
}
function handlerPassword(e) {
var loginForm = document.getElementById("forLogin");
var old_input = loginForm.pswView.value;
var display_input = old_input;
var hide_input = loginForm.psw.value.split("");
if(e.originalEvent.data === ' ') {
console.log(' ');
loginForm.pswView.value = hide_input.join("").replace(/./g,'*');
return
}
var start = inputEle[0].selectionStart;
var length = Math.abs(cursorEnd - cursorStart);
console.log('cursorEnd - cursorStart: ' + length)
console.log('cursorEnd:' + cursorEnd + ' ,cursorStart: '+ cursorStart + ' ,start:' + start)
if (length == 0) {
if (display_input.length < hide_input.length) {
console.log(' ')
hide_input.splice(start, 1);
} else {
console.log(' ')
hide_input.splice(cursorEnd, 0, display_input.slice(cursorEnd,start));
}
} else {
if (display_input.length < hide_input.length && cursorStart === start) {
hide_input.splice(start, length);
console.log(' ');
} else {
console.log(' ')
hide_input.splice(cursorStart, length, display_input.slice(cursorStart,start));
}
}
var viewPsdValue = "";
var psdValue = "";
for (var i = 0; i < old_input.length; i++) {
viewPsdValue += "*";
}
psdValue = hide_input.join("");
console.log(' : ' + psdValue +'')
loginForm.pswView.value = viewPsdValue;
loginForm.psw.value = psdValue;
inputEle[0].selectionStart = start;
inputEle[0].selectionEnd = start;
}
});