Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在FireFox中使用iframe会增加一个额外的<;车身>;标签?_Firefox_Iframe - Fatal编程技术网

在FireFox中使用iframe会增加一个额外的<;车身>;标签?

在FireFox中使用iframe会增加一个额外的<;车身>;标签?,firefox,iframe,Firefox,Iframe,我有一个网页,使用iframe嵌入我们的另一个网站。但是,FireFox在呈现iframe的内容时遇到了问题。当我检查DOM中的原始html时,我注意到iframe中有以下DOM结构: #document <!DOCTYPE html> <html> <body></body> <head> … </head> <body> … </body&

我有一个网页,使用iframe嵌入我们的另一个网站。但是,FireFox在呈现iframe的内容时遇到了问题。当我检查DOM中的原始html时,我注意到iframe中有以下DOM结构:

#document
    <!DOCTYPE html>
    <html>
        <body></body>
        <head> … </head>
        <body> … </body>
    </html>
#文档
… 
… 
注意head标记上方的body标记-它不在源DOM中!从开发人员工具中删除它可以修复所有的渲染问题。出于某种原因,FireFox在head标签之前添加了第二个body标签。这是我的难题:

  • 额外的正文不在正在交付的源HTML中
  • 额外的标签只显示在FireFox、Chrome和IE中,iFrame中没有
  • 如果我直接转到FireFox中加载的iframe的url,那么额外的body标记就不存在了
  • 我没有插件-FireFox安装是干净的
  • 我有最新的FireFox(v24.0)

  • 有人知道这是什么原因吗?嵌入的站点非常简单,没有任何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没有表现出这种行为。我现在遇到的正是这个问题。你有没有找到解决办法?