2013-10-16 18 views
0

我有一個使用iframe嵌入我們另一個網站的網頁。但是,FireFox在呈現iframe的內容時遇到問題。當我檢查了原始的HTML,這是在DOM中,我注意到下面的DOM結構中的iframe中:在FireFox中使用iframe會添加額外的<body>標記嗎?

#document 
    <!DOCTYPE html> 
    <html> 
     <body></body> 
     <head> … </head> 
     <body> … </body> 
    </html> 

注意身體標籤head標籤上面 - 這不是在源DOM!從開發人員工具中刪除它可修復所有呈現問題。出於某種原因,FireFox在head標籤之前添加了第二個body標籤。這是我的難題:

  1. 額外的身體是不是在被交付
  2. 額外的標籤只在Firefox顯示了它的源HT​​ML,Chrome和IE沒有它在那裏I幀
  3. 如果我去直接訪問iframe在FireFox中加載的url,額外的body標籤不存在!
  4. 我也沒有插件 - Firefox中安裝清潔
  5. 我有最新的Firefox瀏覽器這個帖子(v24.0)的

有誰知道什麼可能會造成這個?被嵌入的網站非常簡單,沒有任何可以添加這個額外標籤的JavaScript。

+0

嘗試其他瀏覽器。這聽起來很奇怪。 –

+0

有關您編寫的代碼問題的問題必須在問題本身中描述具體問題 - 幷包含有效代碼以重現問題。請參閱http://SSCCE.org獲取指導。 – nmaier

+0

@Diodeus我同意這很奇怪。如上所述,IE(9&10)和Chrome不顯示此行爲。 – lehn0058

回答

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> 
相關問題