IE8标准模式不再支持CSS表达式(Expression)

原文地址:Ending Expressions

标准遵守情况、性能、可靠性和安全性等设计标准构成了IE8的设计整体,包括新的和已经存在功能特性。最终,IE8的标准模式不再支持CSS表达式(CSS Expression)。这个变化在以前就曾经在IE blog上公布过,这篇文章将提供关于这个决定的更详细的一些信息。下面的FAQ(常见问题)将给您一个快速的总览:包括它的功能特性、我们设计决定的背后原因以及这对你的网站有什么影响。

什么是CSS表达式?

它也被称为“动态属性”,这个特有的CSS扩展是在IE5中引入的。远远在jQuery和Dojo等JavaScript库的诞生之前,它允许web开发者动态地通过CSS选择器来给页面绑定脚本。举一个例子,下面的CSS声明根据一天中的事件来更新页面中某些区块的背景颜色:

div.title { background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" ); }

为什么不再支持CSS表达式?

  • 为了遵循标准
  • 表达式是Internet Explorer专有的,而且不能通用
  • 一个常见的用例是用表达式来修正IE的bug或者来模仿浏览器暂时不支持的CSS 2.1的一些功能,例如最小宽度(min-width)和最大宽度(max-width)。我们不仅非常努力地在IE8中修正了这些bug,而且我们的新的布局引擎也原生支持这些曾经没有的特性。
  • 为了改进性能
  • 为了减小浏览器攻击面
  • 因为它们暴露了一个脚本执行环境,CSS表达式就构成了一个可能的脚本注入攻击方向。

IE7和兼容模式还支持表达式吗?

是的,还支持。为了向后兼容,CSS表达式在兼容模式和IE7严格模式下仍然可以执行。不过从IE8 Beta 2开始,它们就被IE8的标准模式忽略了。

我的网站上的页面使用了CSS表达式,这会对我带来什么影响?

由于有了IE8的新的布局引擎,大部分用来修正CSS 2.1的bug和缺点的表达式都不再需要了;我们期望不支持或者不标准的解释属性能够以一种标准的、可通用的方式来工作。因为那些表达式支持更多特定的目的,他们所做的事情本身是可以通过标准的JavaScript来达到的,通常是通用的而且可以以较低的成本运行。具体细节取决于你的应用程序。根据你在这篇日志的反馈,我们可能在以后的部分访问一些例子。

终止支持表达式——一个通常用来修复极端问题的功能,我们已经非常努力的工作以在这个版本中解决——将会使得IE8更标准、更快速以及对我们的用户来说更安全。

Sylvain Galineau
项目经理

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.