我有一个网页,它使用iframe嵌入我们的另一个网站。但是,FireFox在呈现iframe内容时遇到问题。当我检查DOM中的原始html时,我注意到iframe中的以下DOM结构:
#document
<!DOCTYPE html>
<html>
<body></body>
<head> … </head>
<body> … </body>
</html>
注意head标签上方的body标签 - 这不在源DOM中!从开发人员工具中删除它可以修复所有渲染问题。出于某种原因,FireFox在head标签之前添加了第二个body标签。这是我的谜题:
有谁知道造成这种情况的原因是什么?嵌入的网站非常简单,没有任何可以添加此额外标记的JavaScript。
答案 0 :(得分:0)
我不知道是什么导致在某些FF iframe中发生这种情况,而不是其他因素,但如果您有访问权限允许您更改加载到iframe中的网页代码,则可以添加此脚本删除第一个空身体标签:
<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>