Help us understand the problem. What is going on with this article?

ChromeでscrollTopを設定しようと思ったらハマった件

More than 3 years have passed since last update.

エフェクトとかで何かとウィンドウのスクロール位置をセットすることは多いと思います。

何故かChromeで動かなくなり悩んだところ、
Webkit系でスクロール料の取得・設定に使用していたdocument.body.scrollTopが使えなくなってるのが原因らしく。
document.scrollingElement.scrollTopを呼べばよいみたい。

こんなコードを書いてたのですが動作せず。

setScrollTop(top) {
    // Webkit系であればdocument.body.scrollTopを呼ぶ。
    // それ以外はdocument.documentElement.scrollTopを。
    const tgt = (this.browser.isWebKit) ? document.body : document.documentElement;
    tgt.scrollTop = top;
}

こうしたら解決。

setScrollTop(top) {
    let tgt;
    if ('scrollingElement' in document) {
        tgt = document.scrollingElement;
    } else if (this.browser.isWebKit) {
        tgt = document.body;
    } else {
        tgt = document.documentElement;
    }
    tgt.scrollTop = top;
}

もうちょい頭良いコードにできると思いますがひとまず。

TakashiShibusawa
へちょいフロントエンドおじさんです。 ちょっと前まで占いコンテンツの制作会社にいました。 いまはデザイン会社でおしごとしてます。
http://www.nilgiri-tea.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away