Est-ce que quelqu'un sait pourquoi assigner scrollTop
sur l'élément body ne fonctionne plus?
par exemple: document.body.scrollTop = 200
ne fait pas défiler le document.
Cause : Chrome enfin conforme aux spécifications de défilement en version 61
Solution : Utilisez scrollingElement
Mettez à jour l'exemple pour:
var scrollNode = document.scrollingElement ?
document.scrollingElement : document.body;
scrollNode.scrollTop = 200;
La solution décrite à la fin de cette question (recherche de document.scrollingElement
ou retomber sur document.body
) ne fonctionnera pas sur IE, car il ne supporte pas document.scrollingElement
_ ( docs ), et dans IE, l'élément scroll est l'élément HTML.
Je suggérerais donc qu'une meilleure solution pour cela serait quelque chose comme:
var scrollNode = document.scrollingElement || document.documentElement;
Ce qui devrait fonctionner pour tous les navigateurs modernes.
En tant que note de bas de page, il est intéressant de noter que la propriété scrollingElement
semble avoir été ajoutée dans le seul but de la rendre de telle sorte que nous ne le fassions pas nécessite des vérifications/substitutions pour obtenir l'élément de défilement racine, mais en raison d'incompatibilités accrues avec les navigateurs, nous avons encore besoin d'une vérification/repli pour pouvoir utiliser scrollingElement
.
Web dev n'est-il pas amusant?
Bonjour, j'ai un problème similaire et j'ai fini d'ajouter ce code au document prêt et cela fonctionne. De plus, j'ai des problèmes avec des info-bulles mal placées et ce code corrige le problème.
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;
}
};
J'espère que cela pourrait vous aider.
Remercier