较少mixin在IE8上产生错误

时间:2013-12-03 12:47:35

标签: javascript internet-explorer-8 less

当我使用这个mixin时,我在IE8上收到此错误:

SyntaxError: Object doesn't support property or method 'map'

>>少<<

    body{.gradient; 
}

>>混入<<

.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) {
  background: @color;
  background: -webkit-gradient(linear,
                               left bottom,
                               left top,
                               color-stop(0, @start),
                               color-stop(1, @stop));
  background: -ms-linear-gradient(bottom,
                                  @start,
                                  @stop);
  background: -moz-linear-gradient(center bottom,
                                   @start 0%,
                                   @stop 100%);
  background: -o-linear-gradient(@stop,
                                 @start);
  filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start));
}

有人可以解释一下为什么IE8会让我这个错误吗? TY。

2 个答案:

答案 0 :(得分:5)

看起来您正在使用less.js,这需要支持ES5的浏览器。 (map()Array.prototype的一种方法,已添加到ES5中。

IE8不支持ES5,但在less.js解决问题之前包括es5-shim

答案 1 :(得分:1)

map()Array对象上的一种方法,但仅在更现代的浏览器中受支持。 LESS正在使用它,这就是为什么它在IE8中不起作用的原因(或其中一个原因)。

你可以填充Array.map(),但在这种情况下它可能不值得,因为LESS可能会使用其他现代JS功能,这也会破坏IE8。

但坦率地说,无论如何这一切都没有实际意义。在浏览器中运行LESS对于网站性能来说是一个非常糟糕的主意:在所有JS代码加载并且LESS解析器有机会运行之前,您将推迟正确呈现网站。

如果你想要不错的性能,你应该真正在服务器上编译你的LESS代码到CSS,并且只为浏览器提供纯CSS。在我们考虑LESS是否实际在任何给定的浏览器中运行之前,您应该考虑这样做。