2015-05-31 10 views
5

A volte, quando io chiamo:jQuery larghezza della finestra a volte ritornare valore errato

$(window).width(); 

il valore restituito è sbagliato (su tutti i browser tranne IE, su IE è sempre corretto). Io uso la linea:

$('div.container p').text($(window).width()); 

per modificare il testo dell'elemento p così ho potuto vedere che valore è stato restituito quando sto ridimensionamento della finestra. Ecco un esempio in cui il valore restituito è errato: http://prntscr.com/7biu4y

Nell'angolo in alto a destra, è possibile vedere quali sono le dimensioni effettive su Chrome.

Ho notato che QUANDO il valore è sbagliato, è sempre spento di 17px.

NOTA che il valore restituito NON è sempre sbagliato, quindi la maggior parte delle volte la finestra sembra come dovrebbe.

Help!

risposta

14

@Inacio Schweller è corretto.

Per ottenere un risultato coerente cross-browser, è possibile utilizzare la versione non jQuery:

window.innerWidth

Provate a digitare questo nella console del browser e vedrai che restituisce un coerente risultato indipendentemente dal browser che si sta utilizzando.

Nota: la versione non jQuery window.outerWidth restituisce lo stesso risultato in IE e Chrome, ma restituisce un valore leggermente inferiore in Firefox.

+0

Grazie a Inacio Schweller ea te Trevor. Usando plain javaScript window.innerWidth restituisce il valore di cui ho bisogno. – user435421

2

È a causa della barra di scorrimento della finestra del browser. Se si riduce a icona la finestra per visualizzare la barra di scorrimento, la vista indicherà che è inferiore di 17 pixel al valore. Se la finestra è piena, la differenza 17px non verrà visualizzata.

+0

Ho pensato che potesse essere il caso. Come allora dovrei occuparmi di questo e perché i browser (tranne IE) considerano anche le barre di scorrimento quando non ho alcun contenuto sul sito web semplicemente contenitori? – user435421

Problemi correlati