Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
浏览器自动添加<;a>-不带JavaScript的标记_Javascript_Html_Browser_Hyperlink_Inspector - Fatal编程技术网

浏览器自动添加<;a>-不带JavaScript的标记

浏览器自动添加<;a>-不带JavaScript的标记,javascript,html,browser,hyperlink,inspector,Javascript,Html,Browser,Hyperlink,Inspector,我只是在一个比下面的例子更大的网站上遇到了一个问题,这导致我调查了几个小时,直到找到了错误的原因。我的问题是,浏览器自动生成 没有链接 有意思吧?浏览器在第一行正确地关闭-标记,并在div周围打开一个新标记。您可能会猜到我已经开始调试页面上的所有JavaScript(有很多),因为我认为JavaScript是从服务器获取页面后更改代码的唯一东西 好吧,现在我知道了,这不是唯一的事情。在尝试调试这个问题时,我在互联网上没有找到任何关于它的信息,因此我想我会在将来与有完全相同问题的人分享我的知识(

我只是在一个比下面的例子更大的网站上遇到了一个问题,这导致我调查了几个小时,直到找到了错误的原因。我的问题是,浏览器自动生成

没有链接
有意思吧?浏览器在第一行正确地关闭
-标记,并在div周围打开一个新标记。您可能会猜到我已经开始调试页面上的所有JavaScript(有很多),因为我认为JavaScript是从服务器获取页面后更改代码的唯一东西

好吧,现在我知道了,这不是唯一的事情。在尝试调试这个问题时,我在互联网上没有找到任何关于它的信息,因此我想我会在将来与有完全相同问题的人分享我的知识(我们都知道:他很快就会出现)

但是,还有一个未解的问题:为什么?我看不出浏览器应该自动修复并创建新标记的原因。这对我来说没有意义

有两件事:

  • 可能会被解释为尝试使用自动关闭的锚标记,因此实际上是一个新锚标记
  • 嵌套锚定是非法的,因此浏览器在打开第二个锚定之前先关闭第一个锚定
  • 然而,我没有证据,这几乎是一个猜测


    更多推测:这可能是一种依赖于浏览器的行为,与浏览器在表中自动创建
    标记的原因有关。他们只是已经知道,如果没有
    ,网站作者打算使用

    因此,一旦自动关闭的
    出现,它就结束了未关闭的锚,并开始了一个新的锚。虽然
    是一个容器,但它不能自动终止。锚点将根据XHTML规则结束,即在容器之前关闭包含的标记

    这需要对HTML规范和个人浏览器行为进行大量查询。

    两件事:

  • 可能会被解释为尝试使用自动关闭的锚标记,因此实际上是一个新锚标记
  • 嵌套锚定是非法的,因此浏览器在打开第二个锚定之前先关闭第一个锚定
  • 然而,我没有证据,这几乎是一个猜测


    更多推测:这可能是一种依赖于浏览器的行为,与浏览器在表中自动创建
    标记的原因有关。他们只是已经知道,如果没有
    ,网站作者打算使用

    因此,一旦自动关闭的
    出现,它就结束了未关闭的锚,并开始了一个新的锚。虽然
    是一个容器,但它不能自动终止。锚点将根据XHTML规则结束,即在容器之前关闭包含的标记


    这需要对HTML规范和个别浏览器行为进行大量查询。

    实际问题应该是,为什么要故意向浏览器提供无效的HTML

    但回到话题上来。历史上,HTML一直是一种不稳定的标记语言。没有DOM概念的人会编写HTML,例如:

    <B><U>hi, </B> shall I be underlined or not?</U>
    
    嗨,我该不该加下划线?
    
    上述内容显然是无效的HTML。但是,如果你给浏览器添加了无效的HTML,它就不会呕吐。它将尝试以其认为作者意图的方式恢复文档

    DOM中的元素(这是inspector显示给您的)只能有一个父元素。因此,从逻辑上讲,必须先关闭
    ,然后才能关闭
    。但是作者尚未关闭
    ,因此浏览器假定文本的其余部分也应加下划线。因此,无效的HTML将恢复为大约以下DOM结构:

    <B><U>hi, </U></B><U> shall I be underlined or not?</U>
    
    嗨,我该不该加下划线?
    

    在您的特定情况下,
    标记不能在HTML中自动关闭,因此:

    <a>...<a/>
    
    。。。
    

    /
    被解释为语法糖,浏览器认为您在没有关闭第一个元素的情况下打开了第二个
    元素。它很可能会在整个文档中生成锚元素,直到在恢复过程中遇到必要的关闭。

    实际问题应该是,为什么要故意向浏览器提供无效的HTML

    但回到话题上来。历史上,HTML一直是一种不稳定的标记语言。没有DOM概念的人会编写HTML,例如:

    <B><U>hi, </B> shall I be underlined or not?</U>
    
    嗨,我该不该加下划线?
    
    上述内容显然是无效的HTML。但是,如果你给浏览器添加了无效的HTML,它就不会呕吐。它将尝试以其认为作者意图的方式恢复文档

    DOM中的元素(这是inspector显示给您的)只能有一个父元素。因此,从逻辑上讲,必须先关闭
    ,然后才能关闭
    。但是作者尚未关闭
    ,因此浏览器假定文本的其余部分也应加下划线。因此,无效的HTML将恢复为大约以下DOM结构:

    <B><U>hi, </U></B><U> shall I be underlined or not?</U>
    
    嗨,我该不该加下划线?
    

    在您的特定情况下,
    标记不能在HTML中自动关闭,因此:

    <a>...<a/>
    
    。。。
    

    /
    被解释为语法糖,浏览器认为您在没有关闭第一个元素的情况下打开了第二个
    元素。它很可能会在整个文档中生成锚元素,直到在恢复过程中遇到必要的关闭

    对此的唯一解释是解析分两步进行。首先是某种“标记汤”模式,浏览器试图关闭所有打开的内容。之后(当站点加载完成时),解析器标记(X)HTML并发现输入错误的结束标记。它假定这是一个和fi