上一次經過將yui3-panel-hidden樣式增長display:none屬性,解決了非IE瀏覽器下的顯示問題,見YUI3中panel基於Visibility屬性引起的一個bug javascript
原本覺得解決了,結果過了週末再測試時,IE下又不對了,Panel顯示后里面的內容全都看起來漂浮在頁面上,Panel的背景消失了,看起來就象是panel的內容所有疊加在頁面的底上,上週測試沒出問題,估計是IE下js和css緩存的緣故。css
測試來測試去,我對這個現象很迷惑,由於只是給yui3-panel-hidden樣式增長了display:none屬性而已,而Panel顯示後,此panel的包裝div事實上是移除了該樣式,應該不起做用纔對,可是添加了這個屬性就顯示不對,移除了就顯示正常,很難理解。不使用此屬性其餘瀏覽器下又全都不正常(測試包括firefox,chrome和360,明明是使用IE核心的360竟然也不跟IE表現一致)html
想來想去,只能是經過判斷是否IE瀏覽器應用不一樣的CSS樣式了,一開始想使用css hack,可是考慮這東西還要區分IE的各個版本,從6一直到11,實在夠繁的,其餘瀏覽器還要各自處理,就想能不能在腳本里判斷是不是IE,而後修改該樣式的屬性值,可是搜了下,貌似JS裏還不能動態從新定義CSS Class,只能採用變通方法了java
最後實現是這樣的:判斷若是非IE瀏覽器,就給全部有此問題的對象添加個nonie樣式,而後給nonie樣式應用display:none屬性chrome
在腳本的最後地方添加了這樣的代碼:瀏覽器
if (!(navigator.userAgent.indexOf("MSIE") > 0)) { Y.all('.yui3-panel-hidden').addClass('nonie'); }
這就是若是不是IE瀏覽器,在全部的.yui3-panel-hidden對象上再添加個nonie樣式緩存
而後在css裏:測試
.yui3-panel-hidden.nonie { display: none; }
就是帶有nonie的yui3-panel-hidden對象才使用display:noneui
這樣IE和非IE瀏覽器都能正常顯示panel了firefox