【问题标题】:Skipping html closing tags跳过 html 结束标签
【发布时间】:2016-07-22 11:51:34
【问题描述】:

Google chrome(可能还有所有最近的浏览器)会在缺少 html 元素时自动添加结束标记。 会自动在父元素末尾添加结束标签

示例 1:

<tag1>content1<tag2>content2<tag3>content3

将输出:

<tag1> 
    content1 
    <tag2> 
        content2
        <tag3> 
            content3 
        </tag3>
    </tag2> 
</tag1>

示例 2:

<tag1>content1<tag2>content2</tag2><tag3>content3

将输出:

<tag1> 
    content1 
    <tag2> 
        content2
    </tag2>
    <tag3> 
        content3 
    </tag3>
</tag1>

我知道前面的 html 示例无效且难以阅读。但是使用 html 缩小器 删除遵循此规则的关闭 html 标记可能会减小模板的大小。为什么 html minifier 不使用此规则?有什么限制吗?

编辑: 上下文:我不是特别在谈论任何名称标签,这就是我在示例中使用tagX 的原因。例如。使用 angularjs 元素指令

【问题讨论】:

  • 它们无效,因为您使用的是组合元素而不是 HTML。有些元素有可选的结束标签(有些有可选的开始标签)并且可以完全有效。
  • 我们无法告诉您为什么 HTML 缩小器没有利用可选标签规则,因为您还没有告诉我们您正在谈论的是哪个软件(答案可能是“因为你没有设置正确的选项”或“我们怎么知道,问作者”)
  • 你为什么还要关心节省几十个字节?为您的导航添加一些新图标,任何节省都将付诸东流。
  • 因为缩小绝对不是主要目标。绝对不可读和不可维护的代码,只有你自己理解,在 2016 年人们有 100+ MBit 互联网的时候,编码后的一周不值 1 KB 的数据。人们会主动 skp almst 所有的 vwls,它会自动读取发送的 dt,但我们不这样做。这根本不值得。
  • @YeldarKurmangaliyev —“缩小绝对不是主要目标”。它应该是。 OP 称他所说的工具是“一个 html 缩小器”

标签: html minify


【解决方案1】:

良好的观察力。 Firefox 已经这样做了很长时间,并且它可以帮助开发人员进行语义化。但是我们遇到的问题就是我们刚才提到的。火狐,铬。但是 IE 是做什么的?还是屏幕阅读器?我知道 Safari 并没有在 FF 和 Chrome 的同一级别上执行此操作。

这归结为浏览器支持以及对有效 html 的普遍全球共识。拥有一个可以使用的蓝图而不是特定于浏览器的实现意味着我们可以更安全地跨新旧设备运行 Web 技术,这些设备不会对其解析器进行故障保护。

【讨论】:

  • 浏览器在处理无效 HTML 方面一直比较一致。 HTML 5 包含旨在使它们更加一致的解析规则。很多元素都有明确的可选结束标签,因此问题所问的甚至可能不是无效的 HTML(不幸的是,给出的示例不是minimal reproducible examples)
  • 就屏幕阅读器而言,我不知道有任何处理原始 HTML 的内容。只有浏览器提供给他们的 API。
  • @Quentin 这就是我的意思。 “相对一致”并且不知道进入市场的设备的功能已经是坚持总体标准的一件好事。屏幕阅读器通常依赖有效的 html 来工作。根据设备浏览器的先进程度,这可能包括也可能不包括故障安全 html、为您关闭标签或修复您的块或内联元素,Firefox 已经做了很多,但 safari 没有。依赖可能或“相对一致”的特定浏览器实现不支持 100%。
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2022-01-17
  • 2019-04-28
  • 2012-03-20
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多