標籤與Extjs在IE下的兼容性探討

       關於<!DOCTYPE> 標籤的詳細說明在這裏就不復制了(呵呵),下面談談Extjs在IE下存在的兼容問題。

       筆者定義了一個css hover僞類:

.icon:hover,
.icon.ui-draggable-dragging {
  background-position: 0 0;
  background-repeat: repeat;
  border: 2px #fff solid;
  padding: 5px 0 5px;
  cursor:default;
  
}

        當鼠標移到圖標上時效果如下:

         當然IE6是隻支持a標籤的,可是筆者在ie7,ie8下,打死也實現不了上圖的效果,這鬱悶啦!一個勁的百度“ie css兼容性”,都只得到一句話:ie6只支持a標籤的hover僞類。也就是說ie7,ie8是支持的,可爲什麼沒有效果呢?筆者也在一些N人博客詢問過,解決辦法是添加一個a標籤,靠!這不是問題的根源啊,難道筆者的ie是山寨的?

        今天本來主要任務是解決extjs在ie下顯示不正常的,表示爲右鍵菜單顯示錯誤,按鈕無效等。碰巧把上面的問題也解決了。

         關鍵問題就在於DOCTYPE聲明,由於本項目軟件結構採用一般的菜單式,單獨的一個界面爲一個tab頁,而tab頁中內嵌一個extjs網頁,問題就在這裏,主頁有一個DOCTYPE聲明,內嵌的網頁也有一個DOCTYPE聲明,一直沒有注意,這兩個聲明竟然不一樣。

主頁:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">

內嵌頁:

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

        後面統一用第二種,extjs顯示正常了,右鍵可用了,按鈕有效了!!!IE7,IE8測試均正常,世界又一次和平了。

        奇怪的是,前面定義的hover僞類也顯示正常了,阿彌陀佛,萬能的主啊!

         So,再一次百度這個不起眼的DOCTYPE,總結如下:

          要建立符合標準的網頁DOCTYPE聲明是必不可少的關鍵組成部分;除非你的XHTML確定了一個正確的DOCTYPE,否則你的標識和CSS都不會生效,也就是說如果沒有這個DOCTYPE聲明將會導致CSS失效,特別是沒有聲明或聲明不正確將在標準瀏覽器下更是不能正常顯示。
          而上面採用的Transitional(過渡的):要求非常寬鬆的DTD,它允許你繼續使用HTML4.01的標識(但是要符合xhtml的寫法)。

         最簡便DOCTYPE聲明方法:

 <!DOCTYPE html>

        如果你使用過Ext Designer就會發現,它就採用了這種聲明。

 

作者:kunoy
申明:作者寫博是爲了總結經驗,和交流學習之用。
如需轉載,請儘量保留此申明,並在文章頁面明顯位置給出原文連接。謝謝!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章