Javascript shim将“const”重新定义为Internet Explorer的“var”

时间:2011-07-05 18:30:05

标签: javascript internet-explorer

Internet Explorer不支持“const”关键字。我可以使用垫片检查是否支持“const”,如果不支持,则将其重新定义为var?我想如果它强制执行常量会很好,也许使用object.Freeze,但我可以使用简单的垫片。

更新:我想这样,所以我可以使用现有的使用“const”的Javascript库而不修改它们。显然,查找/替换会起作用,但它很乱,而且不易维护。

2 个答案:

答案 0 :(得分:1)

您可以编写服务器端填充程序,因此当请求.js文件时,当文件流式传输到浏览器时,const将替换为var。 (需要适当的分词/空白检测)

由于您在服务器上无法检测浏览器功能,因此必须依赖User-Agent字符串才能为IE执行此操作,或者在客户端浏览器上运行的javascript告诉服务器它需要非常规代码。

我使用“userprefs.css”文件做了类似的事情,该文件确实由Java servlet支持,专门为每个用户构建和流式传输文件。

答案 1 :(得分:1)

我会使用Modernizer并根据对Const的支持加载相应的脚本文件。您可以编写一个Grunt JS插件,通过自动查找和替换'const'来自动构建IE的第二个版本。