angular4&&ie9踩坑日记
本文旨在总结项目中所遇到的兼容性大坑,所以可能是遇到什么就随手写下来,没什么连贯性,还请见谅 ie9中不支持deleteEvent事件在ie9中,对于表单的校验可能会遇到的一个问题是,delete, backspace等删除操作,并不会触发angular的表单校验,并且表单对象中的值也不会有任何更新,所以做了如下简陋的兼容性处理 deleteEvent(event,formControlName) { this.form_data.get(formControlName).setValue(event.target.value); this.form_data.updateValueAndValidity(); } 因为项目中只有一两个页面需要兼容ie9,所以并没有做统一的处理,只是提供一种解决这个问题的思路。 ie9中的路由问题这个问题涉及到东西比较多,先总结下问题出现的原因 <base href="/"> 虽然w3c官方是说base标签几乎兼容所有浏览器,但是对于ie9来说,他对base标签的支持是不完整的. <base href="www.baidu.com"> 而对于根路径或者相对路径的写法,ie9是无法识别的,所以造成了一个问题是 如果域名是固定的,那固然可以将href写成静态的,这是可以符合我们的预期的,但是很多情况下,一个项目可能会在开发,预发布,正式等很多环境下跑,那我们就需要不同的base配置,但因为base是html标签,其中是不能使用变量的,所以对于这种动态域名的情况,解决办法是使用hash路由 localhost:4200/#/app 上面这种路有就是hash路由,浏览器会识别到#作为一个特殊的标识符,即使#后面的地址发生变化时,不会对寻址路径产生影响,这需要ng的router配置配合 @NgModule({ imports: [RouterModule.forRoot(routes,{useHash: true})],exports: [RouterModule],}) ng的官网中对hash路由的优劣做了很多描述,在此不做陈述 当然,还有一种更省事的方法,让后端做个重定向就可以了,当然这有点甩锅23333,不过确实是有效的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |