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里的解决方案

posted @ 2014-08-25 17:24  Joyee  阅读(6666)  评论(0编辑  收藏  举报