Chrome/Firefox错误,在标题部分有我的自定义标签-不是IE



我的头部分类似于:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="es" xml:lang="es">
<head>
    <title>Hi!</title>
    <mycustomtag att="1"></mycustomtag>
    <script>...</script>
    <!--anything else-->
</head>
<body>
</body>
</html>

Chrome/FFirefox的问题是MyCustomTag出现在BODY部分和SCRIPT标记中。我不知道为什么出现:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="es" xml:lang="es">
<head>
    <title>Hi!</title>
</head>
<body>
    <mycustomtag att="1"></mycustomtag>
    <script>...</script>
    <!--anything else-->
</body>
</html>

添加

<style>
mycustomtag { display: none; }
</style>

Chrome的行为是一个功能,而不是一个bug。当您使用一个虚构的标签时,您偏离了HTML规范,浏览器可能会为所欲为。(您还有一个不一致的doctype,它会在某些浏览器中触发怪癖模式。)

要处理元素在DOM中的body而不是head的问题(与仅需要隐藏元素相反),请通过将元素从body(如果存在)移动到head:来操作DOM

<script>
var myElement = document.getElementsByTagName('mycustomtag')[0];
if(myElement.parentNode === document.body) {
  document.body.removeChild(myElement);
  document.head.appendChild(myElement);
}
 </script>

解决这个问题的唯一方法是管理html的呈现,并添加自定义标记来开始正文和结束正文标记。这种方式可以删除浏览器注入的所有标签。Chrome在机身末端插入标签:s太不可思议了!结束标记是!非常感谢

最新更新