ASP.NET Core MVC中target="_blank"的a标签无法正常工作
JavaScript事件拦截:项目中可能存在全局的click事件监听逻辑,直接阻止了带
target="_blank"的<a>标签默认跳转行为。比如自定义脚本或依赖的前端库中,可能写了类似document.querySelectorAll('a[target="_blank"]').forEach(el => el.addEventListener('click', e => e.preventDefault()))的代码,或者通过事件委托对这类链接做了拦截。可以打开浏览器控制台,检查是否有相关脚本报错,或通过断点调试确认事件是否被阻止。内容安全策略(CSP)限制:如果网站配置了严格的CSP响应头,可能禁止了弹窗/新窗口的创建行为。查看浏览器Network面板中的响应头,确认
Content-Security-Policy是否包含allow-popups指令,或frame-src/child-src规则是否限制了外部域名。也可以检查项目的Program.cs(.NET 6+)或Startup.cs中的CSP配置代码,看是否存在过度限制。标签助手或HTML辅助方法篡改:若使用ASP.NET Core内置或自定义的标签助手生成链接,可能标签助手对
target属性做了修改或过滤。直接查看页面渲染后的HTML源码,确认最终输出的<a>标签是否和预期一致(比如target="_blank"是否被保留)。浏览器扩展干扰:部分隐私保护、广告拦截类浏览器扩展,可能会拦截带
rel="noopener noreferrer"的外部链接在新标签页打开。尝试在浏览器无痕模式下测试,排除扩展影响。页面元素覆盖问题:链接可能被其他透明元素(如定位的div、span)覆盖,导致点击事件无法触发到
<a>标签。用浏览器Elements面板检查链接的层级(z-index),或查看父元素是否设置了pointer-events: none属性,确认是否有元素遮挡链接。自定义安全中间件拦截:项目中自定义的安全中间件可能对出站链接做了处理,比如修改属性或阻止跳转。检查中间件配置代码,排查是否存在针对外部链接的拦截逻辑。
内容的提问来源于stack exchange,提问作者Oliver Voutat

