双击打开index.html显示文字需三行基础代码且确保文件名正确、UTF-8编码、无富文本格式;fetch报错是因file://协议禁止本地资源加载,须改用HTTP服务如Live Server或python -m http.server。

能双击打开并显示文字的 index.html,三行代码就够了;卡住的从来不是语法,而是文件保存方式、编码或路径里的隐藏陷阱。
用记事本保存 index.html 为什么总是打不开?
根本原因就三个:文件名实际是 index.html.txt、编码不是 UTF-8、或者用了 Word/WPS 这类富文本编辑器。
- 在记事本「另存为」时,「保存类型」必须选
所有文件(不是默认的文本文档 (*.txt)) - 「文件名」栏里手动输入完整名称:
index.html(不能带引号,也不能漏掉.html) - 编码选
UTF-8(Windows 记事本里叫“UTF-8”即可,不用刻意找“无 BOM”——2026 年主流浏览器已兼容 BOM) - 别用 WPS 或 Word 直接存 HTML:它们会插入不可见的格式控制符,浏览器一读就白屏或报错
Unexpected token <
!DOCTYPE html 和 <html><body> 能不能省?
不能省。少任何一个,浏览器可能进怪异模式(Quirks Mode),导致样式错乱、fetch() 失败,甚至整页空白。
-
!DOCTYPE html必须顶格写在第一行,前面不能有空格、注释或空行 -
<html>是根容器,所有内容必须包在里面;<body>以外的内容(比如直接写<p>Hello</p>)不会渲染 - 最简但可运行的结构就是:
!DOCTYPE html<html><body><p>OK</p></body></html>
双击打开 index.html 为什么 fetch('./data.json') 报错?
因为双击走的是 file:// 协议,现代浏览器出于安全限制,会直接拒绝跨源请求——哪怕 JSON 就在同一文件夹下。
立即学习“前端免费学习笔记(深入)”;
- 错误典型提示:
Failed to load resource: net::ERR_FILE_NOT_FOUND或Access to fetch at 'file:///.../data.json' from origin 'null' has been blocked - 这不是代码问题,是协议限制:HTTP 协议下才允许相对路径资源加载
- 临时解决办法:VS Code 安装
Live Server插件,右键菜单点「Open with Live Server」,地址变成http://127.0.0.1:5500/,一切正常 - 命令行替代方案(推荐):
python -m http.server 8000(Python 3 内置),然后访问http://localhost:8000
为什么改了代码刷新还是旧页面?
浏览器缓存太“聪明”,尤其对 file:// 协议下的页面,有时 Ctrl+R 都不生效。
- 强制刷新快捷键:
Ctrl+F5(Windows/Linux)或Cmd+Shift+R(macOS) - 更彻底的办法:打开开发者工具(F12),右键刷新按钮 → 「清空缓存并硬性重新加载」
- 检查地址栏:确认当前 URL 真的是
file:///.../index.html,而不是你上次从服务器打开留下的http://... - 小技巧:每次改完,在
<body>里加个临时数字,比如<p>v2</p>,一眼看出是否生效
真正拦住新手的,从来不是标签怎么写,而是文件系统和浏览器协议之间的那层薄薄但关键的隔膜——file:// 下连本地 JSON 都读不了,这种限制不亲手试一次,光看文档根本意识不到。



















