In tutta browser recente:Come posso ottenere innerWidth in Internet Explorer 8
window.innerWidth // 1920
in Internet Explorer 8
window.innerWidth // undefined
Qual è il modo migliore per ottenere questo valore in IE8?
In tutta browser recente:Come posso ottenere innerWidth in Internet Explorer 8
window.innerWidth // 1920
in Internet Explorer 8
window.innerWidth // undefined
Qual è il modo migliore per ottenere questo valore in IE8?
Il innerWidth
è supportato da IE9 non IE8, è possibile fare questo insteaad:
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
La linea di cui sopra ti porterà la larghezza da IE e altri browser standard-compliant.
Se si utilizza jQuery, $(window).innerWidth()
vi darà risultato desiderato in tutti i browser troppo.
'$ (window) .innerWidth()' non restituisce lo stesso numero di 'window.innerWidth' se la barra di scorrimento verticale è visibile sulla pagina. –
.innerWidth() non è applicabile agli oggetti finestra e documento, come menzionato nella documentazione jquery. http://api.jquery.com/innerWidth/ "Questo metodo non è applicabile agli oggetti finestra e documento, per questi, usa invece .width()." –
Mi serviva 'document.body.clientWidth' anche in IE9 (stranezze) – jan
È possibile ottenere queste informazioni da IE 8 con
document.documentElement.clientWidth
Occorre considerare che questo valore non sarà esattamente lo stesso che IE 9 ritorni per window.innerWidth
.
Senza jQuery si può provare questo per ottenere height
e width
var myWidth = 0, myHeight = 0;
if (typeof (window.innerWidth) == 'number') { //Chrome
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { //IE9
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
Il commento "Chrome" è fuorviante in quanto questa proprietà è supportata da tutti i browser moderni: https://developer.mozilla.org/en-US/docs/Web/API/window.innerWidth?redirectlocale=en-US&redirectslug=DOM% 2Fwindow.innerWidth # Browser_compatibility ... incluso IE9 che rende obsoleto il "else if". – retrovertigo
Hai letto la domanda? OP ha richiesto il codice che funzionerà per IE8 –
fammi riformulare "... che rende il secondo 'else if' obsoleto". – retrovertigo
document.documentElement.clientWidth;
questo è usato per IE8 per ottenere larghezza cliente
per IE8 utilizzare
document.documentElement.clientWidth
prega nota: il metodo .nernerWidth non è applicabile agli oggetti finestra e documento; per questi, usa invece .width().
So che questo è circa un anno ... ma OP non sta usando jQuery ... –
Per ottenere questo, ho ancora utilizzare:
window.innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
window.innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
Ma per imitare la vera dom-getter dare un'occhiata a questo: https://stackoverflow.com/a/18136089/1250044
So che il innerWidth
non potrebbe essere uguali, ma è possibile utilizzare getBoundingClientRect
nello stesso modo:
elem = document.documentElement.getBoundingClientRect();
width = elem.getBoundingClientRect().right - elem.getBoundingClientRect().left;
Hai esplorato [jQuery] (http://jquery.com)? È molto facile farlo usando questo. –
sì certo, $ (finestra) .innerWidth() funziona bene anche in IE8, grazie – antonjs
@AntoJs '$ (finestra) .innerWidth()' non restituisce lo stesso numero di 'window.innerWidth' se la barra di scorrimento verticale è visibile sulla pagina. –