代码之家  ›  专栏  ›  技术社区  ›  Casey Chu

是什么阻止我在HTML中使用任意标记?

  •  9
  • Casey Chu  · 技术社区  · 15 年前

    div s、 是什么阻止我改变:

    <div class="post">
        <div class="userinfo">
            <span class="name">Casey</span>
            <img class="avatar" src="..." />
        </div>
        <div class="body">
            <p>blah blah blah</p>
            <p>blah blah blah</p>
            <p>blah blah blah</p>
        </div>
    </div>
    

    变成这样:

    <post>
        <userinfo>
            <name>Casey</name>
            <img class="avatar" src="..." />
        </userinfo>
        <pbody>
            <p>blah blah blah</p>
            <p>blah blah blah</p>
            <p>blah blah blah</p>
        </pbody>
    </post>
    

    (我知道它本质上是XML,但在这种情况下,问题变成了“浏览器对呈现XML网页的支持是什么样子的?”)

    6 回复  |  直到 15 年前
        1
  •  6
  •   user113292 user113292    15 年前

    一个原因是internetexplorer(和早期版本的Firefox)没有针对未定义标签的回退机制,最终在样式和嵌套方面都忽略了它们。 Without a shiv ,你的网站将在这些浏览器中崩溃。

        2
  •  5
  •   Ben Blank Jarret Hardie    15 年前

    <blah>
        This is some <span>test</span> test text with another <bogus>tag</bogus> tag
        within, which ends with a fake self-closing <tag />
    </blah>
    

    <blah> ,不是现在该怎么处理,把它本质上当作“没什么”而忽略它。然后他们会很高兴地解析到下一位,看到一些纯文本,里面有一个有效的跨度。最终他们会到达 </blah> 也不要理会。

    这就是为什么Javascript和CSS必须在各自的语言定义中支持打开HTML注释序列的原因:

    <script type="text/javascript">
    <!--  // <--actually a part of the javascript spec, treated as a comment.
         alert('hey!');
    //-->
    </script>
    

        3
  •  1
  •   Kranu    15 年前

    大多数浏览器只会将标记视为任意的(就像旧浏览器如何处理HTML5标记一样)。没有什么能阻止您使用自己的标记,但这并不是一种被广泛接受的编写HTML代码的方法。HTML应该使用预定义的标记。

    如果您对使用任意标记进行编码感兴趣,可以直接使用XML。您可以使用XSLT格式化XML(使用方式类似于样式表,但功能更强大)。请看这里: http://www.w3schools.com/xml/xml_xsl.asp

        4
  •  1
  •   Christopher Beltran    15 年前

        5
  •  1
  •   Alex Nolasco    13 年前

    getElementsByTagName无法使用自定义标记。例子,

    <acme:mytag id="mytag">
        <div id ="x">x</div>
        <div id ="y">y</div>
        <div id ="z">z</div>
    </acme:mytag>
    

    var mytag = document.getElementById('mytag'); // it's found
    var mydivs = mytag.getElementsByTagName ('div'); // but this is always 0
    

    除非你的html标签

    <html XMLNS:acme>
    ...
    </html>
    
        6
  •  1
  •   dkellner    5 年前

    • 没有什么能阻止你
      使用尽可能多的自定义标记,浏览器就会知道你的意思。不仅是现代的,还有IE7+。
    • 无默认外观
      浏览器会将您的标签视为未知,并且不会对其应用默认样式。没有奇怪的利润,填充,没有惊喜的客户和平台。这个 display 属性也不是隐含的,所以给它一个值,但在那之后,一切照常。DOM包含你的节点, querySelector 作品、风格等。
    • 超可读
      您一定会喜欢HTML源代码的新外观。

    需要考虑的事情

    1. 是否自动关闭 <something/> 格式,就像你对 <br/> 例如。这很重要,否则浏览器会去寻找结束标记。我是说,他们怎么可能不。

    2. -这是来自自定义标记怀疑论者的唯一一个好观点:正如我们在HTML5中有很多新标记一样,您可以将一个标记命名为“icon”,它将在下一个HTML标准中有意义,即使有一堆呈现默认值,而且 那会把你的页面弄得一团糟 <dashed-names> 对于你的标签,他们永远不会弄乱虚线标签名称感谢命名的 Web Components . 还可以结账 § 4.13 in HTML standard

    3. 非磁铁效应 -说真的,这是定制标签的问题,我一直在走这条路。使用自定义标记 只有 <div class="gurgleburgle"> ,后来才发现真正的问题完全无关。

    太长,读不下去了 :

        <custom-tags> Yes you can use them </custom-tags>
    
        7
  •  0
  •   Ryan Gooler    15 年前

    问题是它无法验证,新标签将被忽略。