【问题标题】:Loading AngularJS based on browser version throws error根据浏览器版本加载 AngularJS 会引发错误
【发布时间】:2015-03-26 15:53:36
【问题描述】:

我有一个 AngularJS 应用程序,我们需要在 IE8 和现代浏览器上支持它。

由于 AngularJS 1.3+ 不支持 IE8,我想测试浏览器是否为 IE8,如果是则加载 angularJS 1.2.27 else 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>

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

注意事项:

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

【问题讨论】:

  • 为什么不使用条件 cmets?
  • 你为什么不只是有条件的 html 评论,然后显示“升级你的浏览器”消息?
  • Sajjan 没必要这么粗鲁。您正在尝试做的是一种不好的做法。因此,为什么每个人都告诉您使用条件 cmets,而不是尝试为不同的浏览器版本使用不同版本的 angular。
  • 没有真正好的答案,因为通常的做法是在构建应用程序支持的内容之前与客户一起决定。如果客户想要尖端技术,您需要他们使用尖端技术(浏览器),或者至少是常青浏览器,这种说法并不罕见。您可以使用 juste HTML 条件 - msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx ,但这确实不是一个好习惯。
  • 这些是您在构建之前决定的事情。你没有得到答案,因为这是你不应该做的事情。您将在 1.3 中构建的代码交换为现在在 1.2 中运行,您必须更改代码以便它在两者中运行(如果可能的话)。在你打开潜在的大问题之前,你应该去找你的客户讨论这个问题

标签: javascript jquery angularjs


【解决方案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">
<% } %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2016-11-07
    相关资源
    最近更新 更多