在IE8中排除Angular模块

时间:2014-05-13 14:13:09

标签: javascript angularjs internet-explorer-8

在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]-->

1 个答案:

答案 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]-->