Ho un comportamento molto strano con element.innerHTML in IE11.IE11 innerHTML strano comportamento
Come potete vedere qui: http://pe281.s3.amazonaws.com/index.html, alcune espressioni riotjs
non vengono valutate.
Ho rintracciato il basso per 2 cose:
- il segno di euro sopra di esso. È codificato come €
, ma ho lo stesso comportamento con \u20AC
o €
. Succede con tutti i caratteri nell'intervallo dei simboli di valuta e in alcuni altri intervalli. La rimozione o l'utilizzo di un carattere standard non causa il problema.
- Il modo riotjs
crea un tag e un modello personalizzati. Fondamentalmente lo fa:
var html = "{reward.amount.toLocaleString()}<span>€</span>{moment(expiracyDate).format('DD/MM/YYYY')}";
var e = document.createElement('div');
e.innerHTML = html;
Nella risultante e
nodo, e.childNodes
restituisce il seguente matrice:
[0]: {reward.amount.toLocaleString()}
[1]: <span>€</span>
[2]: {
[3]: moment(expiracyDate).format('DD/MM/YYYY')}
nodi Ovviamente 2 e 3 dovrebbe essere una sola. Farli dividere fa sì che la rivolta non riconosca un'espressione da valutare, da qui il problema.
Ma c'è di più: il problema non è coerente e, ad esempio, non può essere riprodotto su un violino: https://jsfiddle.net/5wg3zxk5/4/, dove la stringa html viene analizzata correttamente.
Quindi credo che la mia domanda sia: come alcuni caratteri specifici possono cambiare il modo in cui element.innerHTML analizza il suo input? Come può essere risolto?
Non riesco a ricreare questo problema quando visito la pagina che hai collegato nella tua domanda e la visualizzo in IE11? È stato risolto? –
Non risolto, ma ho usato una soluzione (sporca): non avendo il simbolo dell'euro nell'HTML ma come contenuto di un css ': after' pseudo-element. Il collegamento è il nostro env di gestione temporanea e la correzione è stata distribuita. Tuttavia non risolto. – Antoine
C'è un modo per riprodurre questo errore in modo che possiamo capire cosa sta succedendo? Dal momento che l'hai patchato, non sono sicuro di come esaminare cosa sta succedendo. –