In una pagina Web, è necessario verificare se è presente una barra di scorrimento orizzontale o meno (in modo che venga modificato in modo programmatico il css di qualche altro elemento). C'è un modo per ottenere queste informazioni usando jquery (o pure javascript)?Verifica se la pagina ha una barra di scorrimento orizzontale (computer e dispositivi mobili)
ho testato
function isHorizontalScrollbarEnabled() {
return $(document).width()!=$(window).width();
}
ma non sembra funzionare con tutti i browser (non funziona, ad esempio con un recente telefono Samsung ho provato). Ne ho bisogno per funzionare con tutti i browser, compresi i recenti dispositivi mobili.
Grazie!
EDIT 1
Ho provato le soluzioni fornite da plalx e laconbass, testato IE8, Firefox, Chrome e iPad. Funziona con IE, Firefox & Chrome ma non come voglio sull'iPad.
Il problema sembra legato alla funzione di zoom su dispositivi mobili: anche se, quando ho ingrandire l'iPad, viene visualizzata una barra di scorrimento orizzontale, document
, window
e document.body
larghezze non cambiano (è stato anche lo stesso problema con il Samsung telefono che ho provato prima oggi).
Ecco il codice che ho usato per prova:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<title>test</title>
</head>
<body>
<div style="width: 500px; background: red;" id="test">click here to test</div>
<script type="text/javascript">
var i = 1;
$("#test").click(function(){
$(this).html("Test #" + (i++)
+ "<br>document width=" + $(document).width() + ", windows width=" + $(window).width()
+ "<br>document width=" + $(document).width() + ", body width=" + $(document.body).width()
);
});
</script>
</body>
</html>
Qualsiasi idea di come rilevare la presenza di una barra di scorrimento orizzontale, che funziona anche dopo lo zoom in/out su un dispositivo mobile come iPad?
possibile duplicato di http: // StackOverflow.it/questions/2059743/detect-elements-overflow-using-jquery – plalx
Ho provato la soluzione suggerita su quel post, funziona con chrome ma con firefox, '$ (" body ") [0] .scrollWidth' e' $ (" body ") [0] .clientWidth' sono uguali anche se esiste una barra di scorrimento orizzontale. – Walid
@plalx Forse la domanda è la stessa ma IMO è molto più chiaro questo – laconbass