我的头部分类似于:
<!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太不可思议了!结束标记是!非常感谢