在IE8中排除Angular模块加载的最佳策略是什么?
我有一个在IE8中运行良好的应用程序,除了一个模块,https://github.com/compact/angular-bootstrap-lightbox,它可以解决所有问题。
我可以跳过为IE8用户提供的功能,但我怎么会这样做呢?
我试图天真地用条件注释中的no-op版本替换模块,但它似乎不起作用:
<!--[if lt IE 9]>
<script type="text/javascript">var IE8 = true;</script>
angular.module('bootstrapLightbox', []);
<![endif]-->
有什么建议吗?
现在它有效。我还需要在Lightbox提供程序中定义'this。$ get'-function作为no-op:
<!--[if !IE]-->
<script src="bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js"></script>
<!--<![endif]-->
<!--[if gt IE 8]>
<script src="bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js"></script>
<![endif]-->
<!--[if IE 8]>
<script type="text/javascript">
angular.module('bootstrapLightbox', []).provider('Lightbox', function () {
this.$get = function noop() {
return true;
}
});
</script>
<![endif]-->
答案 0 :(得分:1)
首先,看起来你的angular.module代码不在script标签内。此外,尝试有条件地包括模块,或有条件地加载不同的“app”模块(不需要此依赖项的模块):
条件脚本包括
<!--[if lt IE 9]><!-->
<script type="text/javascript">angular.module('bootstrapLightbox', []);</script>
<!--<![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<script src="bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js"></script>
<!--<![endif]-->
条件应用模块加载
<!--[if lt IE 9]><!-->
<html ng-app="myLegacyIEAppModule">
<!--<![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html ng-app="myAppModuleForEveryoneElse">
<!--<![endif]-->