1. ホーム
  2. javascript

document.body.scrollTop Firefoxは0を返す : JSのみ

2023-10-04 01:48:34

質問

純粋なjavascriptの代替はありますか?

以下は、オペラ、クローム、サファリで動作します。エクスプローラではまだテストしていません。

http://monkey-me.herokuapp.com

https://github.com/coolcatDev/monkey-me-heroku/blob/master/static/js/myscripts.js

ページロード時に、div '.content'までスクロールする必要があります。

var destiny = document.getElementsByClassName('content');
var destinyY = destiny[0].offsetTop;
scrollTo(document.body, destinyY, 200);

function scrollTo(element, to, duration) {
    if (duration <= 0) return;
    var difference = to - element.scrollTop;
    var perTick = difference / duration * 2;

    setTimeout(function() {
        element.scrollTop = element.scrollTop + perTick;
        scrollTo(element, to, duration - 2);
    }, 10);
};

どのように解決するのですか?

これを使ってみてください。 document.documentElement.scrollTop . もし私が正しいのであれば document.body.scrollTop は非推奨です。

更新

Chrome は回答に従っていないようです。安全のために、コメントで @Nikolai Mavrenkov が提案したように使ってください。

window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0

これですべてのブラウザがカバーされるはずです。