programing

Chrome 61 본체가 스크롤되지 않음

firstcheck 2021. 1. 16. 09:53
반응형

Chrome 61 본체가 스크롤되지 않음


scrollTopbody 요소에 할당이 더 이상 작동하지 않는 이유를 아는 사람이 있습니까?

예 : 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에서 작동하지 않으며 IE에서 스크롤 요소는 HTML 요소입니다.

따라서 나는 이것에 대한 더 나은 해결책이 다음과 같을 것이라고 제안합니다.

var scrollNode = document.scrollingElement || document.documentElement;

모든 최신 브라우저에서 작동합니다.


참고로, scrollingElement속성 이 루트 스크롤 요소를 얻기 위해 확인 / 대체가 필요 하지 않도록 만들기위한 유일한 목적으로 추가 된 것처럼 보이지만 더 많은 브라우저 비 호환성으로 인해 여전히 필요 하다는 점을 고려하는 것이 흥미 롭습니다. 를 사용하기위한 확인 / 대체 scrollingElement.

웹 개발이 재미 있지 않나요?


이 코드를 문서 준비에 추가하고 작동합니다. 또한 잘못 배치 된 일부 툴팁에 문제가 있었고이 코드가 수정했습니다.

    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;
        }
    };

이것이 당신을 도울 수 있기를 바랍니다.

참조 URL : https://stackoverflow.com/questions/45061901/chrome-61-body-doesnt-scroll

반응형