在FireFox中使用iframe会增加一个额外的<;车身>;标签?
我有一个网页,使用iframe嵌入我们的另一个网站。但是,FireFox在呈现iframe的内容时遇到了问题。当我检查DOM中的原始html时,我注意到iframe中有以下DOM结构:在FireFox中使用iframe会增加一个额外的<;车身>;标签?,firefox,iframe,Firefox,Iframe,我有一个网页,使用iframe嵌入我们的另一个网站。但是,FireFox在呈现iframe的内容时遇到了问题。当我检查DOM中的原始html时,我注意到iframe中有以下DOM结构: #document <!DOCTYPE html> <html> <body></body> <head> … </head> <body> … </body&
#document
<!DOCTYPE html>
<html>
<body></body>
<head> … </head>
<body> … </body>
</html>
#文档
…
…
注意head标记上方的body标记-它不在源DOM中!从开发人员工具中删除它可以修复所有的渲染问题。出于某种原因,FireFox在head标签之前添加了第二个body标签。这是我的难题:
有人知道这是什么原因吗?嵌入的站点非常简单,没有任何javascript可以添加这个额外的标记。我不知道是什么原因导致某些FF iframe中出现这种情况,而不是其他,但是如果您有权限更改加载到iframe中的页面代码,您可以添加此脚本以删除第一个空的body标记:
<script type="text/javascript">
var ffFixCount = 0,
clearExtraBody = function(){
var bodies = document.getElementsByTagName("body");
if(bodies.length > 1){
// assumes the empty, extra body tag you want to remove is the first one
bodies[0].parentNode.removeChild(bodies[0]);
window.clearInterval(ffBodyFixer);
}else{
ffFixCount++;
}
if(ffFixCount = 20){
window.clearInterval(ffBodyFixer);
}
};
//check for extra body tag will run every 100ms,
// 20 times, or, for 2 seconds (to give time for bug to happen)
// or will stop if extra body tag is found
var ffBodyFixer = window.setInterval(
function(){
window.clearExtraBody();
}, 100);
</script>
var ffFixCount=0,
clearExtraBody=函数(){
var body=document.getElementsByTagName(“body”);
如果(体长>1){
//假设要删除的多余的空主体标记是第一个标记
实体[0].parentNode.removeChild(实体[0]);
窗口清除间隔(ffBodyFixer);
}否则{
ffFixCount++;
}
如果(ffFixCount=20){
窗口清除间隔(ffBodyFixer);
}
};
//检查是否有额外的车身标签将每100毫秒运行一次,
//20次,或持续2秒(为错误发生留出时间)
//或者,如果发现额外的车身标签,将停止
var ffBodyFixer=window.setInterval(
函数(){
window.clearExtraBody();
}, 100);
尝试其他浏览器。这听起来很奇怪。关于您编写的代码问题的问题必须在问题本身中描述特定的问题,并包括重现问题的有效代码。我同意这是非常奇怪的。如上所述,IE(9&10)和Chrome没有表现出这种行为。我现在遇到的正是这个问题。你有没有找到解决办法?