關於<!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就會發現,它就採用了這種聲明。
如需轉載,請儘量保留此申明,並在文章頁面明顯位置給出原文連接。謝謝!