J'ai utilisé la fonction next pour obtenir la hauteur/largeur de la barre de défilement :
function getBrowserScrollSize(){
var css = {
"border": "none",
"height": "200px",
"margin": "0",
"padding": "0",
"width": "200px"
};
var inner = $("<div>").css($.extend({}, css));
var outer = $("<div>").css($.extend({
"left": "-1000px",
"overflow": "scroll",
"position": "absolute",
"top": "-1000px"
}, css)).append(inner).appendTo("body")
.scrollLeft(1000)
.scrollTop(1000);
var scrollSize = {
"height": (outer.offset().top - inner.offset().top) || 0,
"width": (outer.offset().left - inner.offset().left) || 0
};
outer.remove();
return scrollSize;
}
Cette solution basée sur jQuery fonctionne dans IE7+ et tous les autres navigateurs modernes (y compris les appareils mobiles où la hauteur/largeur de la barre de défilement sera de 0).
1 votes
Cette question se pose dans le cas où la barre de défilement se trouve au mauvais endroit (quelque part au milieu de l'écran). Dans cette situation, vous ne souhaitez probablement pas afficher de barre de défilement. Dans la plupart des cas, j'ai trouvé qu'iScroll était la solution parfaite, neutre du point de vue du design, pour cette situation : iscrolljs.com