jQuery scrollTo仅适用于Chrome 61

时间:2017-10-18 10:01:01

标签: javascript jquery angular google-chrome angular-material

我正在开发一个Angular 2/4项目,我必须在每次导航更改时向上滚动...由于我使用sidenav(Angular Material)和许多其他东西,这很复杂。 我刚刚经历了一个非常烦人的问题,其中包括:

this.router
    .events
    .filter(event => event instanceof NavigationEnd)
    .subscribe(() => {
         const contentContainer = document.querySelector('.mat-drawer-content');
         contentContainer.scrollTo(0, 0);
     });

如果在子组件之间进行任何导航,它会向上滚动,即使我在其他地方导航(到兄弟路线)。 它在Firefox和较新版本的Chrome(> = 61)中正常工作,但不幸的是,如果我使用例如,则会引发以下异常: Chrome 60或59(尚未针对任何其他版本进行测试)。

  

错误:未捕获(在承诺中):TypeError:e.scrollTo不是函数

我使用预构建的jQuery 2.1.1,并且在搜索问题时,Chrome v61似乎发生了重大变化。但我的问题恰恰相反:它的版本更高,而不是较低版本......

是否可以使其适用于每个(相关的)Chrome版本?

1 个答案:

答案 0 :(得分:1)

实际上 scrollTo() 不是jQuery函数,它是用JavaScript定义的,你不能在元素上调用SELECT CampoValores, Numero FROM [dbo].[ObtenerDatosPropios] ('RE-00935898','Alvaro') ,它只是在{{1}中定义的方法对象,这就是你得到scrollTo()的原因。

您只能在window上调用它:

e.scrollTo is not a function

如果您查看window.scrollTo() Notes on MDN,您会看到:

  

有关滚动元素,请参阅Element.scrollTopElement.scrollLeft