其实你会遇到的最困难的问题不是boilerplatejs,而是外部库。
具体的调整取决于您在应用程序中利用的功能,但首先您需要做的只是
- 添加 html5shim 以支持 HTML5 元素,例如
<section>
- 包含 json2 库,用于缺少 json 序列化支持
- [可选地] 包括 explorercanvas 以启用 flot 图表
把它放在你的<head> 部分:
<!--[if lt IE 9]>
<script type="text/javascript" charset="utf-8" src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<script type="text/javascript" charset="utf-8" src="http://cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js"></script>
<script type="text/javascript" charset="utf-8" src="http://explorercanvas.googlecode.com/svn/trunk/excanvas.js"></script>
<![endif]-->
通过这个 sn-p,您将获得 boilerplatejs 示例页面,其中包含路由、主题和 i18n 支持。
然后,您会注意到在 Click Counter 示例中,无论您单击按钮多少次,您都不会获胜。这是因为 clickCounter/clickme 组件发布的LOTTERY_ACTIVITY 事件由于 pubsub.js 库中的错误(?)没有到达任何侦听器(我什至 @987654322 @ 前一段时间)。要解决它,请修补 libs\pubsub\pubsub-20120708.js,更改
params = (args.length > 1) ? Array.prototype.splice.call(args, 1) : []
到 IE8 兼容的调用:
params = (args.length > 1) ? Array.prototype.splice.call(args, 1, args.length-1) : []
恭喜...你赢了!!!
Backbone TODO 模块中的剩余问题由您自行解决,您可以使用 original code 作为指导。
总而言之,我想说boilerplatejs 完全兼容 IE8,任何不兼容都来自支持库,而不是核心代码。