IE6、IE7、IE8的CSS、JS兼容
Internet Explorer 6中查看使用 Microsoft JScript 的網頁,可能會遇到web瀏覽器速度較慢的性能問題。原因是如果js腳本同時創建大量變量,jscript引擎執行垃圾收集算法時會監視腳本中變量分配的 數量、腳本中使用的文字值的數量和腳本中分配的字符串值的總大小,如果超過這些值的閾值,就會發生垃圾收集,垃圾收集進程會中斷正在運行的腳本。因此,這 些運行中的腳本將被掛起,直至垃圾收集完成為止。
IE6 、 IE7 、 IE8 在 CSS 和 JS 方面的區別 :
1、IE8中的css中關于width或是height中如果使用像素形式作為參數時,參數必須是帶“px”的,而且此參數必須是大于0的,而在IE6和IE7中是支持不帶“px”參數的,而且參數是可以為一個負數。
2、如:style=height:180px\\0;只有IE8能識別,style=height:180px\\9,IE都能識別。
2、IE8中的css中“border-style:outset ;”是沒有效果的。
3、IE8中的無序列表之間的距離要比IE6和IE7大的多。
4、IE6能識別*,但不能識別!important,IE7能識別*也能識別!important。
5、IE6支持下劃線,IE7不支持下劃線。
6、在IE8中,一個Iframe中取event.x的值不是Iframe中的相對x坐標,而是最外層的window的x坐標,但是event.y 卻是取的是 Iframe中的相對y坐標。而在IE6和IE7中,event.x和event.y卻得的都是所在Iframe中的相對坐標,可以用 event.clinetX代替。
7、IE8中的javascript中的function對象例如:
function a(){alert(“helloworld”);}
var fun = new function(‘’,’helloworld’);
alert(fun);
此時返回的值為function anonymous(){function a(){alert(“helloworld”)}}, 而在IE6和IE7中返回的值為function anonymous(){alert("helloworld")},也就是說當Function的第二個參數如果是一個函數時,IE8對此參數作用的是 整個函數的代碼,而IE6和IE7則是對此參數起作用的是函數的內部代碼(不包括 “function a(){”和“}”的函數頭和尾)。
8、在ie6中,使用window.status =" 歡迎光臨我的博客!!!",就能在狀態欄顯示這么一行字,但在IE7中,IE7的安全性設置中,默認是不允許腳本更新狀態欄的.
9、IE8會把對 IE6,7,8 用 css 進行測試:
測試代碼:樣式代碼: p {color:#f00;} xhtml 代碼: ?
?文字
?
| ? | IE6 | IE7 | IE8 | 備注 |
| p{_color:red} | √ | × | × | IE6 專用 |
| *html?? p{color:#red;} | √ | × | × | IE6 專用 |
| p{+color:red} | √ | √ | × | IE6,7 專用 |
| p{*color:red} | √ | √ | × | IE6,7 專用 |
| *html?? p{color:red;} | √ | √ | × | IE6,7 專用 |
| p{*+color: red} | × | √ | × | IE7 專用 |
| Body> p{ color: red } | × | √ | √ | 屏蔽 IE6 |
| /*\\*//*/p{+color:red}/**/ | × | × | √ | IE8 專用 |
| p{/*/*/color;/**/} | √ | √ | × | 屏蔽 IE8 |
| p{color:red!important} p{color:red} | √ | √ | √ | 都能用 |
| html>/**/body .head{color:#red;} | × | × | √ | 只對 IE8 |
?
對于 IE8 對 js 新增的功能 :
1、 IE8開始支持一些新的W3C規格,其中多了querySelector和querySelectorAll兩個函數
2、 IE8 引入XDomainRequest跨站數據獲取功能。 這是一個非常有趣的進行跨站數據獲取的功能,不過它與Firefox 3中的跨站 XMLHttpRequest的工作原理不太一樣。它的跨域并不是無限制的。需要服務端返回http header中帶有XDomainRequestAllowed=1才可以跨域,否則是不成功的。XMLRequest 不能跨站一直都是多子域服務器的硬傷。使得很多情況不得不考慮最原始的動態script和JSON的方式。不過IE8團隊有意解決跨站訪問數據的問題,這 是IE8的一個進步。另外,IE8下的XMLHttpRequest增加了一個很重要的屬性 timeout和ontimeout方法,它在對程序進行優化時極其重要。
3、 getElementById可以通過id來返回對象。getAttribute("checked") 現在返回“checked”而不是true。動態創建(或修改)的單選按鈕現在可以被選擇了。
支持更多對HTML5的功能:
1、 window.location.hash。這個功能已經被多數瀏覽器支持的非常好。在IE8標準模式中將window.location.hash中的 更改作為導航,并保存先前文檔的URL,可以像在Ajax應用中模仿“后退”按鈕效果。IE8中對它進行了改良,可以廣播這個hashchanged時 間。
2、 DOM存儲。通過這個功能,數據可以持續保存在本地,它將取代原始的cookie存DOM存儲。
3、 postMessage。IE8現在支持跨文件消息通訊(Cross-Document Messaging-XDM)!通過onmessage事件和postMessage方法,兩個來自不同域的網頁可以進行通訊。目前IE8、Opera 9、Firefox 3和WebKit nightlies版均支持這個功能,也就是說,該功能幾乎已被所有最新瀏覽器支持。
4、 Offline Events。在IE 8中擁有一些離線事件來檢測網絡的中斷,通過它我們可以編寫精彩的離線Ajax應用。目前來看支持這一功能的瀏覽器包括Firefox3和IE8。
用firefox或者chrome一登陸最小系統就報480分鐘超時錯誤
IE6 Bugs
1 、不支持用樣式設置 <abbr> 元素
2 、不支持以連字符和下劃線開頭的 class 和 ID 名
3 、 <select> 元素總是出現在堆疊最上面,而無視 z-index 值
4 、如果錨點的偽類沒有使用正確的順序 ( :link , :visited , :hover ) ,:hover 偽類將無效
5 、一個屬性的 !important 聲明會被同一規則中同一屬性的沒有使用 !important 的第二個聲明覆蓋。
6、???????? height 表現類似于 min-height , width 表現類似于 min-width ,左右 margin 雙倍
7、???????? 圓點邊框 (dotted) 看起來像虛線邊框 (dashed)
8、???????? text-decoration 的 line-through 值在文字上看起來比別的瀏覽器要高一些
9 、有序列表如果有一個固定結構 (haslayout 為 true ,不能設置 li 的高度 / 寬度 /zoom 等激活 haslayout 的值 ) ,序號就不會增加,而是保持為 1
10、????? 列表元素不支持 list-style-type 的所有可用的值
11、????? 如果列表條目浮動,指定的 list-style-image 將不會顯示
12、????? 不完全支持 @font-face
13、????? 某些選擇器會錯誤的匹配注釋和文檔聲明
14、????? 如果一個 ID 選擇器結合一個類選擇器不匹配,同樣的 ID 選擇器結合不同的類選擇器也將被當作不匹配。
IE7 bugs
1 、 有序列表如果有一個固定結構 (haslayout 為 true ,不能設置 li 的高度 / 寬度 /zoom 等激活 haslayout 的值 ) ,序號就不會增加,而是保持為 1
2、???????? 列表元素不支持 list-style-type 的所有可用的值
3 、如果列表條目浮動,指定的 list-style-image 將不會顯示
4 、不完全支持 @font-face
5 、某些選擇器會錯誤的匹配注釋和文檔聲明
轉載于:https://www.cnblogs.com/archip/p/3323970.html
總結
以上是生活随笔為你收集整理的IE6、IE7、IE8的CSS、JS兼容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从“如何学会做一只机械表”讲如何创新,如
- 下一篇: 求一个QQ网名男生高冷。