У меня очень странное поведение с element.innerHTML в IE11.
Как вы можете видеть там: http://pe281.s3.amazonaws.com/index.html, некоторые выражения riotjs
не оцениваются.
Я проследил это до 2 вещей:
- над ним знак евро. Он кодируется как €
, но у меня такое же поведение с \u20AC
или €
. Это происходит со всеми символами в диапазоне символов валют и некоторыми другими диапазонами. Удаление или использование стандартного символа не вызывает проблемы.
- Способ riotjs
создает пользовательский тег и шаблон. В основном он делает это:
var html = "{reward.amount.toLocaleString()}<span>€</span>{moment(expiracyDate).format('DD/MM/YYYY')}";
var e = document.createElement('div');
e.innerHTML = html;
В полученном e
node, e.childNodes
возвращается следующий массив:
[0]: {reward.amount.toLocaleString()}
[1]: <span>€</span>
[2]: {
[3]: moment(expiracyDate).format('DD/MM/YYYY')}
Очевидно, что узлы 2 и 3 должны быть только одним. Разделите их, чтобы беспорядки не распознавали выражение для оценки, поэтому проблема.
Но есть еще: проблема несовместима и, например, не может быть воспроизведена на скрипке: https://jsfiddle.net/5wg3zxk5/4/, где строка html правильно разбирается.
Итак, я думаю, мой вопрос заключается в том, как некоторые конкретные символы могут изменить способ element.innerHTML анализирует свой вклад? Как это можно решить?