Body要素にscrollTop
を割り当てることが機能しなくなった理由を誰もが知っていますか?
例:document.body.scrollTop = 200
文書をスクロールしません。
原因:Chrome 最終的にスクロール仕様に準拠 バージョン61
ソリューション: scrollingElement を使用
例を次のように更新します。
var scrollNode = document.scrollingElement ?
document.scrollingElement : document.body;
scrollNode.scrollTop = 200;
この質問の最後に記載されているソリューション(document.scrollingElement
の確認またはdocument.body
へのフォールバック)は、document.scrollingElement
( docs )、IEでは、スクロール要素はHTML要素です。
したがって、これに対するより良い解決策は次のようなものになることをお勧めします。
var scrollNode = document.scrollingElement || document.documentElement;
これは、最新のすべてのブラウザーで機能するはずです。
補足として、scrollingElement
プロパティは、do n'tが必要になるように、それを作成するという唯一の目的のために追加されたように思われることを考慮するのは興味深いです。ルートスクロール要素を取得するためのチェック/フォールバックがありますが、ブラウザーの非互換性がより多くなるため、scrollingElement
を使用するには、チェック/フォールバックが必要です。
Web開発は面白くないですか?
こんにちは、私は同様の問題を抱えており、このコードをドキュメントに追加する準備ができており、動作します。また、私は見当違いのいくつかのツールチップに問題があり、このコードはそれを修正します。
window.onload = function () {
var GetDocumentScrollTop = function () {
var isScrollBodyIE = ASPx.Browser.IE && ASPx.GetCurrentStyle(document.body).overflow == "hidden" && document.body.scrollTop > 0;
if (ASPx.Browser.WebKitFamily || isScrollBodyIE) {
if (ASPx.Browser.MacOSMobilePlatform)
return window.pageYOffset;
else if (ASPx.Browser.WebKitFamily)
return document.documentElement.scrollTop || document.body.scrollTop;
return document.body.scrollTop;
}
else
return document.documentElement.scrollTop;
};
var _aspxGetDocumentScrollTop = function () {
if (__aspxWebKitFamily) {
if (__aspxMacOSMobilePlatform)
return window.pageYOffset;
else
return document.documentElement.scrollTop || document.body.scrollTop;
}
else
return document.documentElement.scrollTop;
}
if (window._aspxGetDocumentScrollTop) {
window._aspxGetDocumentScrollTop = _aspxGetDocumentScrollTop;
window.ASPxClientUtils.GetDocumentScrollTop = _aspxGetDocumentScrollTop;
} else {
window.ASPx.GetDocumentScrollTop = GetDocumentScrollTop;
window.ASPxClientUtils.GetDocumentScrollTop = GetDocumentScrollTop;
}
};
これがあなたを助けることを願っています。
感謝