您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
鼠标悬停密码框时显示明文密码
- // ==UserScript==
- // @license MIT
- // @name TIX007
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 鼠标悬停密码框时显示明文密码
- // @author TIX007
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // 处理密码框的函数
- function handlePasswordFields(passwordField) {
- let originalType = 'password';
- // 鼠标悬停时显示密码
- passwordField.addEventListener('mouseover', function() {
- if (this.type === 'password') {
- originalType = 'password';
- this.type = 'text';
- }
- });
- // 鼠标离开时恢复
- passwordField.addEventListener('mouseout', function() {
- if (this.type === 'text') {
- this.type = originalType;
- }
- });
- }
- // 初始处理现有密码框
- document.querySelectorAll('input[type="password"]').forEach(handlePasswordFields);
- // 观察DOM变化处理动态加载的密码框
- const observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- mutation.addedNodes.forEach(node => {
- if (node.nodeType === 1) { // Element node
- const passwordFields = node.querySelectorAll('input[type="password"]');
- passwordFields.forEach(handlePasswordFields);
- }
- });
- });
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- })();