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

Microsoft Edge 87.0.664.57中autocomplete="off"失效问题求助(ASP.NET MVC)

解决Edge 87.0.664.57中ASP.NET MVC的autocomplete="off"不生效问题

我之前在Chromium内核的Edge新版本里也碰到过一模一样的问题,浏览器完全无视autocomplete="off"的设置,给你几个亲测有效的解决思路:

  • 用autocomplete="new-password"替代off
    这是个很实用的小技巧,原本是针对密码字段设计的,但对普通文本输入框同样有效。因为浏览器无法识别new-password为标准的自动填充标识,就不会触发自动填充行为。你可以修改全局jQuery代码:

    $("input:text, form").attr("autocomplete", "new-password");
    

    或者直接在视图的HTML元素上硬编码这个属性。

  • 动态生成随机的name和id属性
    浏览器是通过输入框的name或id来匹配历史填充数据的,只要每次页面加载时给字段分配一个随机的标识,浏览器就找不到对应的填充记录了。在ASP.NET MVC视图里可以这么写:

    @{
        var randomFieldId = Guid.NewGuid().ToString("N").Substring(0, 10);
    }
    @Html.TextBoxFor(m => m.YourInputField, new { 
        id = randomFieldId, 
        name = randomFieldId, 
        autocomplete = "off" 
    })
    
  • 结合readonly属性和焦点事件
    浏览器不会对只读字段进行自动填充,我们可以先把输入框设为只读,当用户点击获取焦点时再取消只读状态。全局处理的jQuery代码如下:

    $("input:text").attr({
        "autocomplete": "off",
        "readonly": "readonly"
    }).on("focus", function() {
        $(this).removeAttr("readonly");
    });
    

    也可以直接在HTML元素上写内联事件:

    <input type="text" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" />
    
  • 给表单设置非标准的autocomplete值
    有些Chromium内核浏览器会尊重自定义的autocomplete值,比如nope,你可以在ASP.NET MVC的表单标签里添加这个属性:

    @using (Html.BeginForm("YourAction", "YourController", FormMethod.Post, new { autocomplete = "nope" }))
    {
        <!-- 表单内容 -->
    }
    

为什么会出现这个问题?其实是Chromium内核(包括Edge 87+)的设计调整——为了提升用户体验,浏览器会优先忽略autocomplete="off",尤其是针对常见的表单字段,所以常规设置才会失效。上面的方法都是绕开浏览器自动填充逻辑的实用方案,你可以根据自己的场景选择合适的来试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:36:38