2017-10-18 4 views
1

私はAngular 2/4プロジェクトに取り組んでいます。すべてのナビゲーション変更の場合にスクロールアップする必要があります。これは、sidenav(角度材料)と他の多くのもの。これは、子コンポーネント間のいずれかのナビゲーションの場合には、最大スクロール、と私はどこか別の場所(ルートを兄弟に)移動した場合でもjQuery scrollToはChromeの後でしか使えません。

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(他のバージョンではまだテストされていません)。

Error: Uncaught (in promise): TypeError: e.scrollTo is not a function

私はビルド済みのjQueryの2.1.1を使用して、私は問題のために検索したとして、クロームV61での互換性に影響する変更があったようです。しかし、私の問題はちょうど反対です:下位バージョンではなく上位バージョンで動作します...

すべての(関連する)Chromeバージョンで動作させることは可能ですか?

+1

厥ないjQueryの事、そのバニラJS。私は実際にはあなたが 'ウィンドウ'でトリガーできるものだと思いますか? – putvande

+0

あなたは正しいかもしれません。私はwindow.scrollTo(0、0);でいくつかの呼び出しを持っています;なぜ私は言及したものの代わりにこれが問題だと思いますか? :) – Colosh

答えて

1

が実際にscrollTo() jQueryの関数ではありません、それはJavaScriptで定義されていますし、あなたが要素にscrollTo()を呼び出すことはできません、それはあなたがe.scrollTo is not a functionを得た理由です、だけwindowオブジェクトに定義されている方法です。

あなたが唯一のこのようなwindowでそれを呼び出すことができます。

window.scrollTo(0, 0); 

あなたがチェックした場合window.scrollTo() Notes on MDNあなたはそれが表示されます。

For scrolling elements, see Element.scrollTop and Element.scrollLeft .

+0

ありがとう、私は明日Chromeの他のバージョンでそれをテストします! – Colosh

+1

ありがとうございます! Chromeの下位バージョンでもうまく動作します。 – Colosh

+0

@Coloshようこそ。 –

関連する問題