为什么网站用图片替换unicode字符?

Why do web sites replace unicode chars with images?

最近在firefox中安装了NoScript插件来控制javascript的执行。我注意到一些网站使用一些花哨的 unicode 字符作为图像的占位符,一旦我允许 javascript,它们就会被图像替换。一个示例站点是 github.com,请参阅我启用 javascript.

之前截取的屏幕截图

这样做的好处是什么而不是简单地将图像直接放在 html 或 css 中?

这些网站正在使用一种(或多种)图标字体。

图标字体是包含图像的常规字体文件。这是一种减少 HTTP 请求并启用其他一些功能的技术。

现在,我不知道 NoScript 插件如何或为什么会打败它。 (edit — 这显然是一个可配置的 NoScript 选项,默认情况下处于选中状态。所有 @font-face 规则都被阻止,表面上是出于安全原因。)

在您的 GitHub 示例中,快速访问开发人员工具显示有一种名为 "octicons" 的字体。

简短 - 这些奇怪的符号是应该放置图像而不是字符符号的标记(显然,到目前为止)。如果启用JavaScript,在加载过程中将触发特定的JS函数,所有这些标记将被替换为图像。

现在是棘手的部分 - 如果浏览器无法 load/execute JavaScript,那么要么 JavaScript 已被禁用(案例 1),要么存在严重的网络延迟(案例2) 浏览请求超时。

在第二种情况下,我们不想给用户增加额外的图像负担,因为这些图像很可能会永远加载。因此,我们逐步执行该过程:

  1. 我们用图像标记而不是真实图像加载基本网页。
  2. JavaScript 挂钩在 基本网页完全加载后触发。此时,通过 JavaScript 调用在幕后请求所有非关键图像。
  3. 所有此类图像都是异步加载的,并且由于已经加载了基本网页,因此即使一张或多张图像加载失败,用户也不会遇到任何延迟。

嗯,就是这样!