IE8/9的幾個前端bug解決方案


最近做的東西需要兼容IE……啊真是令人憂傷……

解決低版本IE的buggy inline-block

低版本的IE只對本身inline的元素能用inline-block,而本身為block的元素需要設為inline。此外,如果想要讓這個buggy的inline-block生效,還需要讓元素具備hasLayout,常見的方法是設置zoom。如果想繞過低版本IE又保持對其他瀏覽器的兼容,可以這樣:

.xx {
    display: inline-block;
    *display: inline;  // IE7- only hack
    zoom: 1;
}

參考Inline block doesn't work in internet explorer 7, 6

jQuery UI 1.7 的 Draggable 在 IE9 無法使用

哀傷地要使用jQuery UI 1.7 版本帶的Draggable,但是在IE9下無法使用(i.e.完全不能用233 根本拖不了),原因是IE9的鼠標事件更新后舊版本的jQueryUI沒有對它開例外,當成了更低版本的IE去處理,解決方法在這里:jQuery UI does not work on IE9

將_mouseMove的

if ($.browser.msie && !e.button)

改成

if ($.browser.msie && document.documentMode < 9 && !e.button)

為IE9及更高的IE添加例外即可

IE9下出現javascript無法正常生效,按F12后恢復正常

這是因為IE8/9默認沒有console,所以如果代碼里殘留了類似console.log的引用就會報錯,整個js掛掉,參見這里,解決方法是將帶console的語句刪掉(反正一般也是調試用的,刪了無妨),或者用類似HTML5 Boilerplate里的解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM