【发布时间】: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>
但是当我尝试进行动态加载时,我得到:
注意事项:
- 我必须支持IE8。我不能要求我的客户升级他们的浏览器。
- 请不要偏离帖子的重点,尝试就如何识别浏览器版本提出建议。
【问题讨论】:
-
为什么不使用条件 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