そうみたいです body.scrollTop
(およびbody.scrollLeft
)は、ES5 strict-modeでは非推奨です。これらのプロパティを他のDOMElement
sで使用しても大丈夫と思われる場合、この理由は何ですか?
背景情報:
これらのいずれかが実際に変更されるまで、scrollTop
のすべての祖先のelement
値を増加(または指定どおりに減少)しようとする関数があります。 strict-modeで苦情を続けるために、親のチェーンが上に移動するときにbody
要素を特にチェックする必要があるかどうか疑問に思っています。
[明らかに、body
はdocument.body
]
推奨されないのはChrome自体の不正な動作であり、作成者に依存をやめるよう警告しています。
スクロールビューポートは、標準モードではdocument.documentElement
(<html>
)、互換モードでは<body>
で表されます 。 ( Quirksモード Navigator 4およびExplorer 5のドキュメントレンダリングをエミュレートします。)
Chromeはbody.scrollTop
を使用して、bothモードでビューポートのスクロール位置を表しますが、これは誤りです。 彼らはこれを修正したい のように聞こえるので、彼らは著者に標準的な動作のためにスクリプトを書くことを奨励している。
コードを変更する必要はないと思います。標準モードでbody.scrollTop
を使用しても、body
のみのスクロール位置を表すことがわかっている限り、問題はありません(通常、body
スクロールボックスを指定していない限り、0
)。
コンソールでdocument.body.scrollTop
を実行すると、警告を確認できます。
body.scrollTop
は、strictモードでは非推奨です。 strictモードの場合はdocumentElement.scrollTop
を使用し、quirksモードの場合はbody.scrollTop
のみを使用してください。
Chromeの新しいバージョンでコードが機能しなくなることに気付きました。 window.scrollY
を使用して修正しました
前:
var scrollTop = document.body.scrollTop;
今:
var scrollTop = window.scrollY;
今では常に機能しています。より多くのドキュメントを見つけることができます こちら 。
また、私は使用していました:
document.body.scrollTop = 0;
今、私はそれを置き換えました:
window.scrollTo(0, 0);