根据浏览器版本加载AngularJS会引发错误

时间:2015-03-26 15:53:37

标签: javascript jquery angularjs

我有一个angularJS应用程序,我们需要支持IE8以及现代浏览器。

由于AngularJS 1.3+不支持IE8,我想测试浏览器是否为IE8,如果是,请加载angularJS 1.2.27否则1.3.14

这就是我的尝试:

    <script>


$(function () {

    if (isIE8()) {
    $.getScript("https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js", function (data, textStatus, jqxhr) {
        $.getScript("wte_allocationapproval.js", function (data, textStatus, jqxhr) {

        });
    });
    } else {
    $.getScript("https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js", function (data, textStatus, jqxhr) {       
        $.getScript("wte_allocationapproval.js", function (data, textStatus, jqxhr) {
        });
    });
    }


});
</script>
    <!---<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
    <script src="wte_allocationapproval.js"></script> --->
    <div ng-app="AllocationApprovalApp">
        <div ng-controller="AllocationApprovalController">

wte_allocationapproval.js拥有所有NG代码。如果我使用简单的脚本标记,一切正常:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
    <script src="wte_allocationapproval.js"></script>

但是当我尝试动态加载时,我得到了:

enter image description here

备注:

  1. 我必须支持IE8。我不能要求我的客户升级他们的浏览器。
  2. 请不要试图就如何识别浏览器版本提出建议。

1 个答案:

答案 0 :(得分:1)

如果您可以访问服务器端模板,例如Java(JSP),.NET,PHP等,您可以查看传入的用户代理并根据该服务器代理回送所需的版本。我不确定会有多大的问题。在Java中,它看起来像:

<%  String ua = request.getHeader(“User-Agent”);
    boolean IE8 = (ua != null && ua.indexOf(“MSIE 8″) != -1);  %>
<% if(IE8) { %>
   <script src="angular12">
<% } else { %>
   <script src="angular13">
<% } %>