我在 IE11 中对 element.innerHTML 有非常奇怪的行为。
正如您在此处看到的:http: //pe281.s3.amazonaws.com/index.html,一些riotjs
表达式没有被评估。
我已经追踪到两件事:
- 上面的欧元符号。它被编码为€
,但我与\u20AC
or有相同的行为€
。它发生在货币符号范围内的所有字符以及其他一些范围内。删除或使用标准字符不会导致问题。
-riotjs
创建自定义标签和模板的方式。基本上它是这样做的:
var html = "{reward.amount.toLocaleString()}<span>€</span>{moment(expiracyDate).format('DD/MM/YYYY')}";
var e = document.createElement('div');
e.innerHTML = html;
在结果e
节点中,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 解析其输入的方式?如何解决?