IE8 Arresto anomalo in posizione di sfondo getStyle
-
05-07-2019 - |
Domanda
Ho trovato uno strano bug in Internet Explorer 8. Forse qualcuno può aiutarmi a spostarmi.
Quando provo ad afferrare la posizione di sfondo di un elemento, usando background-position-x
tutte le versioni di Internet Explorer funzionano come eccetto tranne IE8 che si arresta in modo anomalo .
Quando eseguo el.getStyle ('background-position')
tutti i browser mi danno i valori corretti tranne che da IE (6, 7 e 8) che restituiscono undefined
.
Uso quindi el.getStyle ('background-position-x')
per tutte le versioni di IE.
IE8, tuttavia, si arresta in modo anomalo sul codice sopra.
Qualcuno ha avuto problemi simili?
Soluzione
Grazie per l'aiuto a tutti. Questo è davvero un bug e funziona solo nel seguente scenario.
- css deve essere caricato su un foglio di stile esterno L'elemento
- non ha uno stile in linea
Il modo per risolverlo, anche se sporco, è aggiungere uno stile in linea all'elemento. Rende felice IE8 e tutti gli altri browser funzionano.
Non ho provato ma, secondo a questo ticket , anche FF2 soffre dello stesso comportamento.
Note a margine:
@marcgg - Avevo intenzione di sottovalutare la tua risposta in quanto non è davvero utile (e destinata a iniziare una guerra di fiamma) ma, a dir la verità, jQuery non manifesta questo problema. Anche se, come probabilmente già sapevi, NON è un'opzione! ;)
@Fabien - IE supporta background-position-x
e manca il supporto per background-position
la costruzione approvata dal W3C.
Altri suggerimenti
Perché non utilizzare la funzione css di jquery che funziona perfettamente con il browser?
Prova a usare:
el.getStyle('backgroundPositionX')
e
<*>sì, thread più vecchio, ma ho pensato di pubblicare un'altra soluzione che ho incontrato nel faro di @ mootools ....
if (Browser.Engine.trident){
var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y');
} else {
var xy = el.getStyle("backgroundPosition");
}
finora funziona bene per me.