You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular去除字符串重音/变音符号时IE11兼容报错问题

IE11兼容String.normalize的解决方案

报错根因

String.prototype.normalize是ES2015(ES6)新增的字符串方法,IE11完全没有实现该API,因此调用时会抛出“对象不支持normalize属性或方法”的错误。

方案1:引入polyfill(改动最小,推荐)

Angular项目直接在polyfills.ts文件中引入normalize的polyfill即可,无需修改原有业务代码:

// 加到polyfills.ts文件末尾即可,core-js是Angular默认内置的依赖,无需额外安装
import 'core-js/es/string/normalize';

引入后原有逻辑str.normalize("NFD").replace(/[\u0300-\u036f]/g, "")可直接在IE11正常运行。

注意:请确保项目tsconfig.json中的compilerOptions.target配置为es5,同时polyfills.ts中IE11相关的基础polyfill已取消注释启用。

方案2:手动实现重音替换逻辑(无需polyfill,适合包体积敏感场景)

如果不想额外引入polyfill,可以手动维护带重音字符的映射表,直接做字符替换,不需要调用normalize方法:

function removeAccents(str: string): string {
  const accentMap = {
    'á':'a', 'à':'a', 'â':'a', 'ä':'a', 'ã':'a', 'å':'a', 'ă':'a', 'ą':'a',
    'é':'e', 'è':'e', 'ê':'e', 'ë':'e', 'ę':'e', 'ě':'e',
    'í':'i', 'ì':'i', 'î':'i', 'ï':'i', 'į':'i',
    'ó':'o', 'ò':'o', 'ô':'o', 'ö':'o', 'õ':'o', 'ø':'o', 'ő':'o',
    'ú':'u', 'ù':'u', 'û':'u', 'ü':'u', 'ũ':'u', 'ů':'u', 'ű':'u',
    'ý':'y', 'ÿ':'y',
    'ç':'c', 'ć':'c', 'č':'c', 'ĉ':'c',
    'ď':'d', 'đ':'d',
    'ĝ':'g', 'ğ':'g',
    'ĥ':'h',
    'ĵ':'j',
    'ł':'l', 'ĺ':'l', 'ľ':'l',
    'ń':'n', 'ň':'n', 'ñ':'n',
    'ŕ':'r', 'ř':'r',
    'ś':'s', 'š':'s', 'ŝ':'s',
    'ť':'t', 'ţ':'t',
    'ź':'z', 'ž':'z', 'ż':'z',
    'Á':'A', 'À':'A', 'Â':'A', 'Ä':'A', 'Ã':'A', 'Å':'A', 'Ă':'A', 'Ą':'A',
    'É':'E', 'È':'E', 'Ê':'E', 'Ë':'E', 'Ę':'E', 'Ě':'E',
    'Í':'I', 'Ì':'I', 'Î':'I', 'Ï':'I', 'Į':'I',
    'Ó':'O', 'Ò':'O', 'Ô':'O', 'Ö':'O', 'Õ':'O', 'Ø':'O', 'Ő':'O',
    'Ú':'U', 'Ù':'U', 'Û':'U', 'Ü':'U', 'Ũ':'U', 'Ů':'U', 'Ű':'U',
    'Ý':'Y',
    'Ç':'C', 'Ć':'C', 'Č':'C', 'Ĉ':'C',
    'Ď':'D', 'Đ':'D',
    'Ĝ':'G', 'Ğ':'G',
    'Ĥ':'H',
    'Ĵ':'J',
    'Ł':'L', 'Ĺ':'L', 'Ľ':'L',
    'Ń':'N', 'Ň':'N', 'Ñ':'N',
    'Ŕ':'R', 'Ř':'R',
    'Ś':'S', 'Š':'S', 'Ŝ':'S',
    'Ť':'T', 'Ţ':'T',
    'Ź':'Z', 'Ž':'Z', 'Ż':'Z'
  };
  return str.replace(/[^\u0000-\u007E]/g, char => accentMap[char] || char);
}

直接调用该函数即可实现去除重音的效果,兼容所有低版本浏览器。

内容的提问来源于stack exchange,提问作者lajili houssem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:39:01