Web HTML
2026-06-27
我曾经有过一个实验,将文件编码存储到一个图片中。
没有想到还有人想到将网站内容存入一个 Favicon,然后通过 JS 解析出来,有意思。
虽然想不到什么实际意义,但是是一次有趣的探索实验。
Tim Wehrle 的文章《I Stored a Website in a Favicon》是这样说的:
PS:代码放在 GitHub 上。
-
编码过程:将 HTML 文本转为 UTF-8 字节数组 → 前置 4 字节记录载荷长度(便于截断尾部无用像素)→ 依次写入 PNG 像素的 R/G/B 通道(每像素存 3 字节),生成的图像看似随机噪点。
<style>
body {
font-family: system-ui;
max-width: 40rem;
margin: 2rem auto;
}
</style>
<h1>Website in a Favicon</h1>
<p>Everything you're reading right now was decoded from favicon pixels.</p>
HTML 载荷:208 字节 + 4 字节长度头 = 212 字节
Favicon 部分:选择 9×9 正方形,81 像素,可以容纳 239 字节数据,Cover 上面的 HTML 负载(利用率约 87%)
-
解码过程:浏览器加载 favicon → 用 Canvas API 绘制并读取像素 RGB 值 → 还原字节数组 → 读取前 4 字节获知长度 → 提取载荷 → UTF-8 解码得到原 HTML → 替换页面内容渲染。
- 关键限制:favicon 只存内容,仍需一小段外部 JavaScript(bootstrap loader)来解码,无 JS 时它只是一张普通 PNG。
Web HTML
2026-06-23
页面上加链接可以点击触发拨号 <a href="tel:+8613800138000">138****8000</a>,这个各浏览器都支持。
不同的是,iOS Safari 自动识别电话号码并注入拨号连接,而 Android Chrome 则没有这个行为。
在 iOS Safari 会自动扫描页面中的数字串(比如订单号、序列号、IP 地址),只要格式“看起来像电话”,就会偷偷把它们转换成可点击的拨号链接:
<a href="tel:1234567890">1234567890</a>
这会导致样式错乱,甚至误触拨号。
解决方案:
-
全局关闭自动识别:
<meta name="format-detection" content="telephone=no" />
注意:这是 Apple 私有的规范,并非 W3C 标准。
-
真正需要拨号的地方,手动声明:
<a href="tel:+8613800138000">138****8000</a>
HTML
2021-08-21
HTML5 的一个重要变化是彻底放弃 XML 化路线,也就是所谓的 “no logger based on SGML”,事实上 HTML5 就是因为浏览器厂商和 W3C 之间存在是否应该 XML 化这个分歧才诞生出来的。最终厂商联盟 WHATWG 获胜,取得了标准制定方面的绝对话语权(W3C 设计的 XHTML2 胎死腹中),其他的功能上的大跨度变化(除了本身的功能增加之外,对外设备连通性,性能)都只能算是副产品。
我们常说的 H5 实际上是 HTML5 + CSS3, JS 一般好像没有要求,应该还是默认 ES5, 不过现在 ES6 目前也已经在主流浏览器上得到了很好的支持。
黄色:废弃
绿色:新增
红色:非标准
标签
基础框架
<!DOCTYPE>
<!-- -->
html
head
body
title
meta
base
basefont
style
link
文档结构
p
h1 ... h6
ul, ol, li
dl, dt, dd
dir 使用 ul 替代
span
div
table, tr, td, th, thead, tbody, tfoot, col, colgroup, caption
a
样式/排版
abbr, acronym 简写
bdo 文字书写方向
b, strong
big, small
center
font
i 斜体
s, stike 中划线
u 下划线
del, ins 删除、插入,默认就是加上中划线和下划线
em 强调
dfn 术语
q, blockquote, cite 引用
address
var 变量
samp 样本
kbd
br
hr
sub, sup
ruby, rt, rp
pre, code
图片/视频/音频
img
map
area
canvas
figcaption
figure
piture
svg
audio
video
source
track
表单
form
input
select
textarea
button
option, optgroup
label
legend
datalist 配合 input 使用
output
Frame
frame
frameset
noframes
iframe
程序
script
noscript
embed 可能是 v4 没有纳入标准
object
param
applet
语义标签
main
header
footer
nav
article
aside
section
details
dialog
menu
menuitem 火狐
summary
Web Components
Custom Elements
H5 特性。
新的 API
- SVG
- Canvas
- 音频/视频
- WebRTC
- 本地存储
WebStorage: LocalStorage + SessionStorage
IndexedDB
WebSQL
PS: WebSQL 相关规范已经冻结,所以现在不属于 HTML5 标准,只有 Safari 和 Chrome 系浏览器支持。
火狐全力支持 IndexedDB,认为一项标准不应该依赖一个具体的实现(SQLite),而且对于在网页端执行 SQL 非常不看好。
- WebAssembly
这同样不属于 HTML5 的范畴,不过也是一项重要的标准,可能对 Web 开发产生很大的影响。
- WebSockets
- Server-Sent Event
- 2D/3D (WebGL)
- XMLHttpRequest Level 2
参考资料与拓展阅读