最可靠方式是启用本地HTTP服务:用Acode/Htmlx启动内置预览服务,或用Termux运行Python HTTP服务器,从而绕过file://协议限制,支持外链资源、fetch、localStorage等完整Web功能。

手机端直接运行 HTML 代码,不需要编译、不依赖服务器,但必须绕过浏览器对 file:// 协议的限制(尤其是外链 JS/CSS、fetch、本地存储等行为会失败)。最可靠的方式是走 HTTP 协议——哪怕只是本地临时服务。
用 data:text/html, 快速跑单页纯 HTML
适合只含内联样式和简单脚本的“一次性验证”,比如测试一个按钮点击弹窗。Chrome、Firefox、Edge 移动版都支持:
- 在地址栏输入:
data:text/html,<html><body><button onclick="alert('ok')">test</button></body></html>,然后回车 - 注意:URL 编码必须做——空格要变
%20,引号要转义,否则解析中断;JS 里不能用单引号嵌套单引号,建议统一用双引号 - 所有资源必须内联,不能
<script src="xxx.js"></script>,也不能fetch('./data.json') - 无法访问
localStorage或indexedDB(部分 Android Chrome 会静默禁用)
用 Acode / Htmlx 等编辑器启动内置预览服务
这类 App 实际上在后台起了一个本地 HTTP 服务(如 http://localhost:5000),把当前文件映射为网页路径,从而规避 file:// 限制:
- 安装
Acode(F-Droid 或 GitHub Release)或Htmlx(Play Store),新建index.html并保存 - 点击右上角「Preview」按钮,它会自动打开 WebView 或跳转到
http://localhost:xxxx/ - 此时
<script src="main.js"></script>、fetch('/api')、localStorage全部可用 - 缺点:预览服务默认只监听
localhost,无法从其他设备访问;且部分 App(如旧版 Dcoder)用的是 file:// WebView,JS 模块或 ES6 import 会报错
用 Termux 启一个真正的 Python HTTP 服务
这是安卓端最接近桌面开发体验的方式,尤其适合调试带 API 调用、图片上传、表单提交的页面:
立即学习“前端免费学习笔记(深入)”;
- 安装
Termux,运行:pkg update && pkg install python - 把 HTML 文件放到
~/html/目录下,进入该目录,执行:python -m http.server 8000 - 手机浏览器访问:
http://localhost:8000/index.html—— 所有相对路径、AJAX、Service Worker 都正常 - 如果想让电脑也访问(同 Wi-Fi 下),改用:
python -m http.server 8000 --bind 0.0.0.0:8000,再查 Termux 的局域网 IP(ifconfig) - 注意:Termux 默认不开启网络权限,Android 12+ 需手动在系统设置里给 Termux 开「完全网络访问」
别踩 file:// 这个坑
直接用文件管理器点开 HTML 文件看似最简单,但实际问题最多:
-
fetch('./data.json')会触发 CORS 错误(浏览器拒绝跨协议请求) -
<script type="module">会报Failed to load module script(模块脚本不支持 file://) - 很多现代 API 如
navigator.geolocation、MediaDevices.getUserMedia在file://下被强制禁用 - iOS Safari 对
file://更严格,连localStorage都可能为空对象
只要页面里有一行外部资源加载或一个现代 Web API 调用,file:// 就不是“运行”,只是“勉强渲染”。真要调试,务必走 HTTP。



















