Password Input Protector

try to protect your password input!

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         Password Input Protector
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  try to protect your password input!
// @author       HeziCyan
// @include      *
// @icon         https://www.google.com/s2/favicons?domain=219.58
// @grant        none
// @license      GPL
// ==/UserScript==

(function() {
    'use strict';

    window.addEventListener('load', function() {
        let inputs = document.getElementsByTagName('input')
        let pass = new Array
        for (let input of inputs) {
            if (input.type === 'password') pass.push(input)
        }

        const callback = function(mutationsList, observer) {
            for (let mutation of mutationsList) {
                if (mutation.type === 'attributes') {
                    let target = mutation.target
                    if (target.type !== 'password') {
                        target.type = 'password'
                        alert('请不要试图修改密码框的 type 属性!')
                    }
                }
            }
        }
        const config = { attributes: true }
        let observer = new MutationObserver(callback)
        for (let ele of pass) observer.observe(ele, config)
    })
})();