2014-01-14 126 views
0

我在IE8中遇到了一些我從未見過的問題。本質上,問題是,有一個具有以下標記的內部樣式的導航菜單:IE8不能正確呈現HTML

 <section class="top-bar-section"> 

     <ul class="left"> 

      <li> 
      <a href="#">Link</a> 
      <a href="#">Link</a> 
      <a href="#">Link</a> 
      <a href="#">Link</a> 
      <a href="#">Link</a> 
      </li> 

     </ul> 

     </section> 

    </nav> 

但是在IE8我期待在DOM樹和HTML沒有被渲染成以上。下面是在IE8和Chrome中比較dom樹的圖片。

IE8 and Chrome Dom tree comparision

你可以看到,資產淨值,部分和UL元素被沒有被彼此的父母和子女元素關閉。這導致了CSS規則的問題,因爲它們需要孩子和父母來允許應用CSS規則。

+0

「ie8」中不支持「HTML5」元素 - http://caniuse.com/#feat=html5semantic有'shivs/shim'修復程序可用。 –

+0

相關:http://stackoverflow.com/questions/21086879/compatibility-issues-with-internet-explorer-8 – RononDex

+0

http://stackoverflow.com/questions/5449502/html5-and-css3-for-ie7-and -ie8 ** OR ** https://www.google.de/search?q=html5+suport+in+IE8&ie=utf-8&oe=utf-8&rls=org.mozilla:en-US:official&client=firefox-a&channel = fflb&gws_rd = cr&ei = 8SrVUuviGNOAhAfX2ICACQ#channel = fflb&q = html5%20support%20in%20ie8%20and%20ie7&rls = org.mozilla:zh-CN:official&safe = off – NoobEditor

回答

1

這是因爲您使用的是HTML5標記爲section是,當然IE8不支持HTML5的標籤,您可以同時在CanIUse

Internet Explorer 8和更早版本看,不支持<section>標籤。

你需要的東西, 「啓用」 HTML5在IE8爲HTML5 ShivingModernizr

HTML5Shiv是一個JavaScript的解決方法,以使在Internet Explorer版本的HTML5元素的造型版之前的9

的Modernizr是一個小型的JavaScript庫,用於檢測下一代Web技術本地實現的可用性,即源自HTML5和CSS3規範的功能

+1

謝謝!我完全忽略了這部分。 – rowefx

1

您需要HTML5Shiv script for IE 8-使用HTML5標籤。 主要的解決方法是在文件頭創建HTML5部分元素:

document.createElement("section") 

這在某種程度上讓CSS引擎知道這個名字的元素存在。

訣竅是,調用document.createElement(「section」)將突然導致IE識別section元素( )。沒有人知道爲什麼, 但它的工作原理,你甚至不需要使用該功能返回的節點。

this文章中,它解釋了爲什麼IE8需要這個腳本。

2

該標籤不被IE8誇張。

它是新的HTML5標籤之一,並且在IE8發佈時還沒有發明。因此IE8對此一無所知。

IE8默認爲不呈現未知元素。

爲了讓IE8瞭解<section>標籤和其他新的HTML5標籤,您需要使用html5shiv填充腳本。該腳本可幫助IE8將這些標記識別爲有效的HTML,從而正確呈現它們。

您還可以使用Modernizr,它具有幫助處理舊瀏覽器的附加功能,還包括HTML5shiv功能。

當然,替代方法是不使用新的HTML5標籤;只需使用<div>,IE8就可以在沒有任何javascript hack的情況下正常工作。