angular10兼容IE9

angular10兼容IE9

angular浏览器支持

Angular官方文档列出了对于IE浏览器的支持程度。

  • 在Angular9及之前的版本都支持IE9及更新版本。
  • Angular10明确说明对于IE9、IE10的弃用。——但可以通过配置,来启用对IE9、10的支持。
  • 而Angular11则明确只支持IE11。

所以如果要兼容IE9,angular的最高版本只能是10。

启用对IE9的支持

一、修改tsconfig.json,指定编译版本

"module": "esnext" --→  "module": "es2015"
"target": "es2015" -→ "target": "es5"

在这里插入图片描述

二、修改.browserslistrc,支持IE浏览器

not IE 9-11 # For IE 9-11 support, remove 'not' -→ IE 9-11 # For IE 9-11 support, remove 'not'

三、修改polyfills.ts,添加各种polyfill支持

1、添加classlist.js

根据polyfills.ts中的提示,我们要支持IE10和IE11,需要把 import 'classlist.js'; 的注释去掉,并执行 npm i --save classlist.js

2、添加core-js

为了支持ES高级语法,我们需要执行 npm install --save core-js@3.22.1 安装core-js并引用需要的模块。core-js就是用于将es6等高级语法转换成低级语法,确保在低版本浏览器上也能正常运行。

/* IE9, IE10 and IE11 requires all of the following polyfills. */
import 'core-js/actual/symbol';
import 'core-js/actual/object';
import 'core-js/actual/function';
import 'core-js/actual/parse-int';
import 'core-js/actual/parse-float';
import 'core-js/actual/number';
import 'core-js/actual/math';
import 'core-js/actual/string';
import 'core-js/actual/date';
import 'core-js/actual/array';
import 'core-js/actual/regexp';
import 'core-js/actual/map';
import 'core-js/actual/weak-map';
import 'core-js/actual/set';

/** IE10 and IE11 requires the following for the Reflect API. */
import 'core-js/actual/reflect';

四、修改路由策略

Angular默认的路由策略为PathLocationStrategy,即http://localhost/login,不带#。而IE9在此路由策略下,会为路径上添加#,导致路由找不到匹配的路径而反复查找,表现为路径上重复添加#。

所以为了在IE9上路由能正常跳转,我们需要修改Router的路由策略为HashLocationStrategy,即访问变为http://localhost/#/login。

在添加路由的情况下,需要在app.modules.ts文件中配置路由策略。

providers: [
    { provide: LocationStrategy, useClass: HashLocationStrategy }
]

此时,Angular 8框架能够顺利在IE9中运行。

Antd Design对IE的兼容程度

Antd Design10在IE11上能正常运行,在IE10上样式会错位,在IE9上将无法正常使用。

IE9不支持CSS3动画,而Antd Design中用了大量CSS3动画,需要引入Angular的BrowserAnimationsModule模块。

引入BrowserAnimationsModule模块,IE9下会报错,导致页面一片空白;

在这里插入图片描述

不引入BrowserAnimationsModule模块,则Antd Design中涉及到CSS3动画的功能(展开、移动)的操作,都会报错。

在这里插入图片描述

所以,如果要兼容IE9,最好不要使用Antd Design作为基础UI组件,可以考虑使用低版本的Bootstrap。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
升级Angular版本的步骤可以根据具体情况而定。一般来说,如果没有涉及到复杂的Angular技术,可以按照以下步骤进行升级: 1. 运行命令`ng update @angular/core @angular/cli`,这将把Angular升级到最新的版本(比如11)。 2. 运行命令`ng update @angular/material`,这将升级Angular Material到与Angular版本相匹配的最新版本。 3. 确保你的TypeScript版本升级到4.0,因为新版本的Angular需要使用TypeScript 4.0。 4. 注意,新版本的Angular不再支持IE9、IE10和IE移动版。如果你的项目中使用了这些浏览器,需要考虑兼容性问题。 总结来说,升级Angular版本可以通过运行相应的命令来实现。官方提供了升级指导页面\[2\],你可以根据你的项目版本和要升级到的版本选择相应的步骤。同时,如果你使用了Angular Material等第三方框架,可以确保它们与Angular版本保持同步升级。另外,建议在升级之前先了解一下新版本的变化和可能的兼容性问题,以避免出现意外情况。 #### 引用[.reference_title] - *1* *2* *3* [Angular入门到精通系列教程(6)- Angular的升级](https://blog.csdn.net/weixin_43288714/article/details/112476713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值