You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站密码自动填充失效(无autocomplete=off),如何用Tampermonkey恢复?

问题分析与解决方案

可能的密码自动填充禁用手段

开发者除了设置autocomplete="off",还可能用以下方法阻止密码自动填充:

  • 动态JS重置属性:页面加载后通过JavaScript动态修改输入框的autocomplete属性,或者监听focus/input事件拦截自动填充行为,手动修改HTML后会被脚本覆盖。
  • Angular Material/CDK的特殊处理:从HTML片段里的cdk-text-field-autofill-monitored类可以看出,页面用了Angular CDK的文本框自动填充监控组件,这个组件可能会干扰浏览器的自动填充逻辑,甚至主动阻止填充。
  • 缺失标准字段标识:浏览器识别密码框通常依赖name="password"或autocomplete="current-password"属性,你的密码框只有formcontrolname="password"(Angular框架用的),没有标准的name属性,导致浏览器无法识别这是密码输入框。
  • 隐藏前置密码框:部分网站会在页面中添加隐藏的type="password"输入框,让浏览器先填充这个隐藏框,真正的密码框就无法获取填充内容。
  • 表单结构不规范:密码框所在的表单没有正确的结构,或者没有和用户名框形成关联的登录表单结构,浏览器无法识别这是登录场景。

Tampermonkey/Greasemonkey脚本解决方案

针对这个Angular Material构建的页面,可以用以下脚本强制恢复密码自动填充:

// ==UserScript==
// @name         Windtre Login Password Autofix
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  恢复Windtre登录页的密码自动填充功能
// @match        https://ac.windtre.it/oa/auth/login
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 等待"ENTRA"点击后密码框加载完成
    const observer = new MutationObserver((mutations) => {
        const passwordInput = document.querySelector('#mat-input-1, input[formcontrolname="password"]');
        if (passwordInput && !passwordInput.getAttribute('name')) {
            // 添加标准name属性和autocomplete标识
            passwordInput.setAttribute('name', 'password');
            passwordInput.setAttribute('autocomplete', 'current-password');
            // 移除Angular CDK的监控类,避免干扰
            passwordInput.classList.remove('cdk-text-field-autofill-monitored');
            // 触发focus事件,触发浏览器自动填充
            setTimeout(() => passwordInput.focus(), 100);
            observer.disconnect();
        }
    });

    // 监听DOM变化,等待密码框出现
    observer.observe(document.body, { childList: true, subtree: true });
})();

使用说明

  1. 安装Tampermonkey/Greasemonkey扩展
  2. 新建脚本,粘贴上述代码并保存
  3. 刷新目标登录页,点击"ENTRA"后脚本会自动处理密码框,触发自动填充

额外排查点

  • 检查页面是否存在隐藏的密码输入框:打开浏览器开发者工具,搜索type="password",看是否有display: none或visibility: hidden的元素,若有可以用脚本移除或修改其属性。
  • 尝试手动触发自动填充:在密码框focus后,使用浏览器的快捷键(比如Safari的Cmd+Shift+A)手动唤起自动填充菜单,看是否能正常显示密码选项。

内容的提问来源于stack exchange,提问作者fferri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:25:37