当我使用这个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。
答案 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是否实际在任何给定的浏览器中运行之前,您应该考虑这样做。