代码之家  ›  专栏  ›  技术社区  ›  godblessstrawberry

检测角度5中的IE11并抑制“属性不存在”警告

  •  0
  • godblessstrawberry  · 技术社区  · 8 年前

    我正在研究需要滚动位置的自定义指令。我发现所有主流浏览器都支持 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
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   godblessstrawberry    8 年前

    看起来你可以用 pageYOffset 而不是 scrollY 页面偏移量 是的别名 滚动的 但有更好的支持: https://developer.mozilla.org/it/docs/Web/API/Window/pageYOffset

    如果要坚持使用解决方案,请执行以下操作:

    1) 是的,你这样想是对的。

    2) 可以通过简单的虚拟投射来抑制警告:

    !!(window as any).MSInputMethodContext && !!(document as any).documentMode;

    推荐文章