代码之家  ›  专栏  ›  技术社区  ›  Lone Learner

HTML规范的哪一部分导致尖括号内的URL被解析为具有属性的元素?

  •  1
  • Lone Learner  · 技术社区  · 7 年前

    <!DOCTYPE html>
    <html>
    <meta charset="UTF-8">
    <head>
        <title>Bar</title>
        <script>
        window.onload = function() {
            console.log(document.body.innerHTML)
        }
        </script>
    </head>
    <body>
    <http://www.example.com/foo/bar/baz.html>
    </body>
    </html>
    

    我将此代码保存在名为 bar.html 然后用Firefox或Chrome打开页面。这是我在控制台中看到的输出。

    <http: www.example.com="" foo="" bar="" baz.html="">
    
    
    </http:>
    

    现在我知道我的代码是错误的,因为它包含了一个URL < > .

    我想了解浏览器是如何将其解析为 http:

    HTML规范中有没有导致这种行为的部分?如果是这样,请您引用HTML规范的这些部分好吗?

    2 回复  |  直到 7 年前
        1
  •  5
  •   BoltClock    7 年前

    你需要知道的一切都在 section 8.2.4

    1. <http: ,解析器位于 tag name state . 元素的标记名为 http: ,包括结肠 </http:>

    2. 第一个 / self-closing start tag state .

    3. 这个 第二 导致解析错误,如步骤2中的链接所述,将解析器切换到 before attribute name state .

    4. 解析器输入 attribute name state

    5. / ,它切换回自动关闭开始标记状态,并重复步骤2和3,但不是一秒钟 但是一个不同的角色(那不是 >

    6. 一旦解析器最终看到 > ,它关闭开始标记,发射它,并按正常方式继续。

        2
  •  -3
  •   Serge    7 年前

    据我所知,HTML规范定义了HTML概念,但不定义如何解析它。解析算法是浏览器程序员的内部主题,他们尽最大努力解析HTML,甚至出现错误。