标签仅在浏览器全局禁用 javascript 时生效,需置于 中紧贴功能区块,内容须原生可用、服务端直出,且不参与 dom 构建或样式计算。

noscript 标签只在 JS 被全局禁用时才生效
noscript 不是“JS 加载失败提示”,也不是“运行时报错兜底”。它只响应浏览器最底层的开关状态:Chrome 设置里关掉 JavaScript、Firefox 配置项 javascript.enabled = false、NoScript 插件全局拦截,或极简环境(如 Lynx、部分爬虫)。<script src="404.js"></script> 返回 404、fetch() 报错、React hydration 崩溃、CSP 拦截内联脚本——这些情况 noscript 完全不感知。
必须放在 中且紧贴功能区块
noscript 在 里只能放 <link>、<style></style>、<meta>;放 <p></p> 或文本会被忽略,用户根本看不到。在 中也得注意位置:
- 不能嵌套在
<div id="app"> 里——JS 禁用后整个容器不渲染,<code>noscript也跟着消失 - 不能作为自闭合标签写成
<noscript></noscript>(语法错误) - 推荐写法:
<div id="search-results"></div> <noscript><form method="GET" action="/search">...</form></noscript> - 表单必须走原生提交:
<form method="post" action="/login"></form>,而不是靠event.preventDefault()+fetch() - 链接必须带真实
href,不能只靠onclick模拟跳转 - 图片用
src(别用srcset),必须带alt - 避免
<button onclick="location.reload()"></button>——JS 都禁了,onclick不执行 - 样式只能用内联
style属性,别指望外部 CSS 或复杂布局 - 服务端输出首屏 HTML(SSR/SSG),比如 Next.js、Nuxt 默认模式
-
noscript内容必须随服务端 HTML 一起直出,不能靠 JS 动态注入 - 资源路径要用绝对 URL 或 base64 内联,相对路径在 JS 禁用时容易 404
降级内容必须原生可用,不能依赖 JS
noscript 里的东西得真能用,不是摆设:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
现代框架项目里它基本形同虚设
纯 CSR 应用(如默认 create-react-app)初始 是空的,JS 一禁就是白屏,noscript 根本没机会解析。它真正起作用的前提只有一个:
最容易被忽略的是:noscript 不参与 DOM 构建、不触发事件、不计算样式(除非显式写 style),它只是块静态文本区域——写得再花哨,没语义、没 alt、没 label,对残障用户反而更难理解。










