【发布时间】:2015-11-23 18:53:31
【问题描述】:
我在 IE11 上遇到了一个奇怪的问题。考虑以下(riot.js 框架的一部分):
var s = "{JSON.stringify(\\{ amount: Math.floor(reward.amount) \\})}";
var s1 = s.replace(/\\{/g, '\uFFF0');
在 localhost 上运行此代码时,它运行良好。但是在我们的暂存环境中运行时,\{ 片段不会被 \uFFF0(代码点 65520)替换,而是被 \uFFFD(代码点 65533)替换。这意味着稍后尝试将特殊字符替换回 { 时会失败。
replace 方法是浏览器的原生方法。包含 HTML(字符串是 DOM 属性)和 javascript 的文件由服务器返回,并带有 charset=utf-8 标头并按此编码。在暂存环境中,它与其他文件捆绑在一起(虽然不是压缩或修改),并且仍然以 utf-8 编码。
我不知道为什么会这样,或者为什么不系统。
【问题讨论】:
标签: javascript replace uglifyjs riot.js