在 Angular 5 中检测 IE11 并抑制 "property doesn't exist" 警告
Detect IE11 in Angular 5 and suppress "property doesn't exist" warnings
我正在处理需要滚动位置的自定义指令。我发现所有主流浏览器都支持 window.scrollY
而 IE11 需要 document.documentElement.scrollTop
所以我在这里尝试确定当前浏览器是否为 IE11:
ngOnInit(){
this.isIE11 = !!window.MSInputMethodContext && !!document.documentMode;// tslint:disable-line
this.checkScrollPosition();
}
我遇到 ts 错误 property MSInputMethodContext doesnt exist on type Window
和 property documentMode doesnt exist on type Document
,尽管代码在我测试过的所有浏览器(chorme、safari、ie11)中都运行良好
1) 我认为这会工作得很好吗,因为 TS 将被转换为可以访问这些属性的纯 JS?
2) 我应该抑制这个警告(如何?)还是应该尝试不同的浏览器检测方法?
我尝试添加这个,但到目前为止还没有成功:
//tslint:disable-line
//noinspection TypeScriptUnresolvedProperty
看来您可以使用 pageYOffset
而不是 scrollY
。 pageYOffset
是 scrollY
的别名,但有更好的支持:https://developer.mozilla.org/it/docs/Web/API/Window/pageYOffset
如果您想坚持您的解决方案:
1) 是的,你的假设是对的。
2) 您可以通过简单的虚拟转换来抑制警告:
!!(window as any).MSInputMethodContext && !!(document as any).documentMode;
我正在处理需要滚动位置的自定义指令。我发现所有主流浏览器都支持 window.scrollY
而 IE11 需要 document.documentElement.scrollTop
所以我在这里尝试确定当前浏览器是否为 IE11:
ngOnInit(){
this.isIE11 = !!window.MSInputMethodContext && !!document.documentMode;// tslint:disable-line
this.checkScrollPosition();
}
我遇到 ts 错误 property MSInputMethodContext doesnt exist on type Window
和 property documentMode doesnt exist on type Document
,尽管代码在我测试过的所有浏览器(chorme、safari、ie11)中都运行良好
1) 我认为这会工作得很好吗,因为 TS 将被转换为可以访问这些属性的纯 JS?
2) 我应该抑制这个警告(如何?)还是应该尝试不同的浏览器检测方法?
我尝试添加这个,但到目前为止还没有成功:
//tslint:disable-line
//noinspection TypeScriptUnresolvedProperty
看来您可以使用 pageYOffset
而不是 scrollY
。 pageYOffset
是 scrollY
的别名,但有更好的支持:https://developer.mozilla.org/it/docs/Web/API/Window/pageYOffset
如果您想坚持您的解决方案:
1) 是的,你的假设是对的。
2) 您可以通过简单的虚拟转换来抑制警告:
!!(window as any).MSInputMethodContext && !!(document as any).documentMode;