2017-10-18 79 views
1

我工作的一個角2/4的項目,我在每一個導航的變化......這是複雜的情況下,向上滾動,由於我使用sidenav(角材料)和很多其他的東西。 我剛剛經歷一個非常惱人的問題,這是以下幾點:jQuery的scrollTo工作後,才鉻61

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,並且正如我搜索的問題似乎在Chrome v61中發生了突變。但我的問題是正好相反:它的工作原理更高版本,而不是低級的......

是否有可能使其在每個(相關的)Chrome版本工作?

+1

那不是一個jQuery的東西,它的香草JS。我認爲它實際上只是你可以在'window'上觸發的東西? – putvande

+0

也許你是對的。我有window.scrollTo了幾個電話(0,0); ..爲什麼你認爲這是問題,而不是我所提到的是什麼? :) – Colosh

回答

1

其實scrollTo()不是一個jQuery的功能,它是在JavaScript中定義的,你不能一個元素調用scrollTo(),它只是在window對象定義的方法,這就是爲什麼你有e.scrollTo is not a function

只能調用它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,不客氣。 –