在HTML中使用未定义的标记名称?

时间:2015-06-12 07:21:30

标签: javascript html css

例如,



<book>
    Harry Potter
    <chapter>
        Chapter 1
    </chapter>
    <chapter>
        Chapter 2
    </chapter>    
</book>
&#13;
#define MY_DEFINITION
&#13;
&#13;
&#13;

此HTML代码段具有清晰的语法,但是,我不确定大多数浏览器是否支持它。这种方法有什么缺点,比如搜索引擎优化问题吗?

4 个答案:

答案 0 :(得分:3)

您在这里谈论自定义HTML标记。你可以&#34;创建&#34;大多数现代浏览器都支持的自定义HTML元素。

除非您先创建&#39;否则Internet Explorer无法识别这些标记。他们使用JavaScript:

document.createElement('tagName');

注意:默认情况下,所有自定义元素都有display: inline,可以通过CSS或JavaScript进行修改。自定义标记在HTML5中也无效。

答案 1 :(得分:1)

原则上这很好,但我会使用XHTML5而不是HTML5,因为它允许引入替代的XML命名空间。然后,我会在自己的命名空间中使用您的自定义元素,以避免冲突(例如,如果未来的HTML修订版添加了bookchapter元素,那么。

<html xmlns:hanfeisun="http://someReservedURIPossiblyYourXsdPath">
...
    <hanfesisun:book>
        <hanfesisun:chapter>
            Chapter 1
        </hanfesisun:chapter>
    </hanfesisun:book>
...
</html>

在CSS中,您需要使用@namespace块(https://developer.mozilla.org/en-US/docs/Web/CSS/@namespace

@namespace hanfeisun url(http://someReservedURIPossiblyYourXsdPath);

hanfeisun|chapter { display: block; }

为了简洁起见,您可以使用较短的命名空间前缀,例如h而不是hanfeisun

答案 2 :(得分:1)

您可以使用适合您内容的架构类型的semanthic html5(文章,摘要等):https://schema.org/Book,因此无需创建其他HTML标记

答案 3 :(得分:0)

您正在谈论Web组件(自定义的html元素)。实现这一目标的标准化方法是W3C工作组的发展主题。如果您对他们的进展感兴趣:

http://w3c.github.io/webcomponents/spec/custom/

它不仅仅是在浏览器中正确显示任何自定义标签:

  

虽然很可能使用任何标记名称创建DOM元素   在HTML中,这些元素不是很有用。通过提供Web   开发人员既可以通知解析器如何正确使用   构造一个元素并对元素的生命周期变化做出反应,   该规范消除了对DOM-as-a-render-view的需要   在大多数Web框架中必须存在的脚手架或   库。