IE8兼容

1.全部文件都不能用中文命名,這個你們應該都懂,,,,然而我仍是遇到有些同事這樣作了,,,當時那個無語啊。。。。node

2.使用 for in 對對象進行遍歷時,須要加上判斷 hasOwnPropertyjquery

不然,解析器會遍歷到 types 的最後一個元素後,會遍歷types 原型對象中的 indexOf,而後就會開始報錯。windows

3.對 Event 對象在IE中也要進行兼容,event = event || window.event;在IE中事件的對象是 event.srcElement,在其餘瀏覽器中則是event.target;直接用js註冊事件時,在IE8中是用的attachEvent(非IE:addEventListener),解除時是用的detechEvent(非IE:removeEventListener)。跨域

能夠用 typeof window.addEventListener != 「undefined」,或者直接 window.addEventListener 程序代碼判斷使用者的瀏覽器是否支持AddEventListener這個事件模型, 若是不支持就使用attachEvent。數組

且,addEventListener語法爲addEventListener(event,function,capture/bubble), 而,attachEvent不須要指定capture/bubble的參數, 由於在windows IE環境下都是使用Bubble的模式。瀏覽器

4.在 IE中事件對象沒有 localName這個屬性,要用就用 nodeName,且nodeName對應輸出的對象的標籤名爲大寫(event.srcElement.nodeName==」INPUT」)。安全

5.在IE中,阻止事件源元素的默認行爲: event.returnValue=false;在非IE中,爲 event.preventDefault(); 在IE中,阻止事件冒泡,即阻止事件傳播到包容對象: event.cancelBubble=true; 在非IE中,爲 event.stopPropagation()。工具

6.在Firefox 3.5+中,放置事件的默認行爲是打開被放到放置目標上的url。若是是把圖像拖到放置目標上,頁面就會轉向圖像文件。若是是把文本拖放到放置目標上,則會致使無效url錯誤。因此爲了讓Firefox支持政正常的拖放,還要取消drop事件的默認行爲,阻止打開拖拽元素的URL。google

7.對元素的寬高等的讀取不要試圖直接讀取元素的內聯樣式中的 width或height(element.style['height'])(像是highcharts就直接這樣作了。。。),由於在IE8中若是元素是按的百分比來寫的話,會直接把數字讀取過來而不是進行轉換再讀取,建議使用 width() 或 height()。url

8.且IE8中窗口 iframe 是沒法繼承父元素的百分比高度的,若是須要iframe繼承父元素高度,須要先得出父元素高度,如原本父元素的內聯樣式寫了style=」height:80%」,用iframe是得不到高度的,此時須要iframe.parent().height(iframe.parent().height())。

9.使用 jquery.dataTables.js 該插件時,最好不要在表格已經渲染後的回調中從新進行刪除列增長列等操做。在google中插件會從新計算元素寬度適配,可是在IE8中不會,因此回出現空出一列或是其餘狀況。。。

10.刪除相關插件的時候最好是按着插件本身刪除方法來,像是彈窗中用了上傳插件,關閉彈窗的時候同事直接用的將該彈窗相關代碼所有刪除掉,可是由於該插件自己的設計中有把按鈕相關的標籤名綁定到window對象,因此會致使在IE8中第二次開彈窗的時候一直報錯。

11.在IE8中對input 框使用 readonly 仍然能使鼠標聚焦在該input 框中, 要對它使用 ele.attr('unselectable','on')。

12.IE9如下不支持 opacity,如要用到,請使用filter:alpha(opacity=50);

13.因爲IE8不支持 placeholder,因此增長了改善這一問題的插件,在注意新增的模塊中有placeholder的input框時,要對其進行$(input).placeholder()。

14.IE8支持:fisrt-child,不支持 :last-child,也不支持:nth-child。

15.IE8對rgba支持很差:background: rgba(255,255,255,.8) 轉成:filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#c8ffffff,endColorstr=#c8ffffff)。

16.IE8不支持CSS3的不少新特性,像是,border-radius、box-shadow、border-image、multiple background images、linear-gradient等,能夠經過引入.htc文件,或使用PIE.js進行兼容。

17.IE8 中字符串對象或字符串基本類型生成的包裝對象都是沒有trim()方法的。像 $(t).text().trim()=="待辦工做" 應寫爲: $.trim($(t).text())=="待辦工做"。

18.對對象屬性的引用盡可能使用字符串形式,避免不當心使用到關鍵字和保留字,如 object['default'] 而不是 object.default 第二種狀況在google不會報錯,可是在IE8會報錯。

19.IE8 不支持select 標籤的onchange事件,建議改爲 click事件。

20.IE8認爲 radio標籤的 onchange事件是在它失去焦點時觸發,這個時候最好作一下判斷,或者用jquery的事件名綁定事件或是on綁定事件。

21.當頁面有要複製粘貼元素的時候,要注意元素ID不能重複,這個在google還說不怎麼會有問題,可是在IE8容錯性很低的狀況下,就問題大了。

22.IE8中數組沒有 indexOf方法,可自行對數組原型對象進行修改(上面提到的trim()方法也是)。

23.要在IE中跨域調用數據,要進行如下設置: 工具 >> Internet選項 >> 安全 >> 自定義級別:

相關文章
相關標籤/搜索