html - HTML 5 中的自定义 DTD

标签 html tags dtd

我正在 html 5 中试验自定义标签。

我尝试了以下方法:

<my-script src='script.js' />

这是在源代码中的“head”标签内 - 但浏览器 (FF\chrome) 将其呈现在主体内。此外,它还带有一个额外的“结束”标记:

<my-script src='script.js'> </my-script>

并且,“body”标签的所有内容都嵌套在这个自定义标签中(浏览器用我的自定义标签包装“body”的内容)。

我尝试使用自定义 DTD,但就是无法正常工作...有人有什么想法吗?

最佳答案

浏览器将标签视为 <my-script src='script.js' />作为未知元素的开始标记(除非页面以 XML 内容类型提供)。由于 head 中不允许使用此类标记, 它隐式关闭了 head元素并启动 body元素。

DTD 与此无关,因为浏览器甚至不读取 DTD(而且 HTML5 没有 DTD,也不可能编写符合 HTML5 语法规则的 DTD)。

因此,实际上,您不能在 head 中使用自定义元素元素。如果你想使用一个没有内容的自定义元素,把它放在 body 中。元素并用拼写的结束标记写入它:<my-script src='script.js'></my-script> .这样,它就不会影响页面的显示或解析,并且除非通过通过 DOM 访问它的客户端脚本,否则不会有任何影响。

关于html - HTML 5 中的自定义 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465222/

相关文章:

html - 颜色未显示在浏览器上,但显示在设计 View 中

javascript - 我如何在 jQuery 过滤器中设置日期的默认值

python - 如何使用 BeautifulSoup4 将 <br> 标记之前的所有文本获取到 pandas 数据框中

c# - 如何使用自定义 XmlResolver 解析 DTD *内部* 的公共(public)标识符?

java - WebLogic 部署成功,但有错误

html - 如果来自 HTML 绑定(bind)的对象的 *ngFor Let 对象返回空数组,如何显示占位符

javascript - 从另一个页面打开 Bootstrap 模式

php - mysql选择关系两个项目

react-native - "The request Url/index.bundle was not found on this server"是什么意思?

java - urlrewrite.xml 配置文件中的语法错误