我想在即将到来的内部网项目中使用样板js,但是,许多机器仍然是带有IE8的WinXP(并且在组织中没有用于大规模Firefox或Chrome部署的选项)。
我很快尝试合并html5shiv,但这似乎没有帮助。 路由或其他功能似乎不起作用。 我试图弄清楚这是否值得做,或者其他人是否在花费更多时间之前试图让它工作。
不是真的。这就是h5bp中的代码的内容
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
这些是正常降级的条件子句 即 <9。
如果这是一个很多人都会在ie<9上的项目,那么最好使用xhtml...只是一个工程考虑
事实上,你将遇到的最困难的问题不是关于样板js,而是关于外部库。
具体的调整取决于您在应用程序中利用的功能,但首先,您需要做的就是
- 添加 HTML5shim 以支持 HTML5 元素,如
<section>
- 包括 JSON2 库,用于缺少 JSON 序列化支持
- [可选] 包括资源管理器画布以启用批次图表
把它放在你的<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]-->
通过此代码段,您将获得样板js示例页面的工作,具有路由,主题和i18n支持。
然后,您会注意到,在点击计数器示例中,无论您单击按钮多少次,您都不会获胜。这是因为由于 pubsub.js 库中的错误(?),由 clickCounter/clickme 组件发布的事件LOTTERY_ACTIVITY
没有到达任何侦听器(我什至前段时间提交了问题)。要解决此问题,请修补库\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) : []
祝贺。。。你赢了!!!
我将修复骨干TODO模块中的剩余问题留给您,您可以使用原始代码作为指导。
总而言之,我会说样板js完全兼容IE8,任何不兼容都来自支持库,而不是核心代码。
BoilerplateJS核心没有设计任何HTML5功能。虽然我还没有在IE8中测试过它,但我相信通过一些调整,这是很有可能的。例如,如果用于路由的库crossroadsJS与IE8不兼容,您仍然可以轻松地将其替换为pathJS或其他与IE8兼容的东西。