我一直在思考这个问题。自从我看到这段代码之后:
document.createElement('myelement');
导致了这个:
我一直想知道这是一个缺陷,还是你真的可以做到这一点。我知道我可以在那里看到制作元素,但我将如何使用它?我如何在HTML中赋予它语义含义?
答案 0 :(得分:0)
好的,不确定它是否是有效的HTML(说实话我认为不是),但确实有效。
它的目的是作为一个div,所以不是使用id“this section”创建一个div,而是使用CSS制作然后使用CSS格式化它,但最好只是坚持使用div。
答案 1 :(得分:0)
你可以这样做,但不再严格XHTḾL。没有现代浏览器会知道如何处理你的元素,所以它可能会导致更多的痛苦而不是好的。
仍然,IE允许你这样做long time ago,但我想在此期间,人们已经意识到这不是你想要的。另请参阅此question的答案。
如果您真的沉迷于自定义语义标记的思想,那么您应该研究XML和XSLT - 您可以使用自定义元素定义XML标记,然后使用XSLT转换将其转换为有效的(X)HTML。
答案 2 :(得分:0)
我一直想知道这是否是一个缺陷
这不完全是一个缺陷。浏览器的一个非常有用的功能是它们允许构造对任何现有规范无效的元素和属性。这意味着当对这些规范进行新的添加时,所有现有的浏览器都会自动支持它们。
如何赋予其语义含义
让其他人同意这意味着什么。如果您发明了<nsfw>
元素并且我同意该元素的含义,那么它已经获得了语义含义。同意意义的人越多,它就越有用。让每个人都同意的经典方法是编写规范,发布并提倡它。
这是WHATWG所做的。虽然作为一组浏览器制造商,他们控制着浏览器中所做的新元素,但他们定义语义的唯一权利是让每个人都相信他们的定义是最好的。因此,像Jeremy Keith这样的人认为他们haven't always got it right是完全合理的。
答案 3 :(得分:0)
您的JavaScript问题是如何使旧版本的Internet Explorer识别HTML5语法,如:
< aside >
< article >
< nav >
...etc
在哪种情况下:你会使用
<!--[if lt IE 9]>
<script type="text/javascript">
document.createElement('header');
document.createElement('nav');
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
document.createElement('hgroup');
</script>
<style type=text/css">
header
,nav
,section
,article
,aside
,footer
,hgroup
{
display: block;
}
</style>
<![endif]-->
您可以在其他方式使用它,但是如果禁用javascript,它肯定无法正常运行。