TypeError: n[o].content.replaceAll is not a function

343 阅读1分钟

今天发现前端网页的脚本在安卓手机飞书内嵌的浏览器中没有运行,导致页面一直卡在 loading 的状态。由于看不到控制台的日志,只好把错误消息打印到了页面上:

TypeError: n[o].content.replaceAll is not a function

replaceAll 方法是在 ES2021 / ES12 中加入的1,很可能是飞书内嵌的浏览器还不支持这个方法。

此时可以通过添加 String.prototype.replaceAll 原型方法来避免这个报错2

if (typeof(String.prototype.replaceAll) != "function") {
    String.prototype.replaceAll = function (s1, s2) {
        return this.replace(new RegExp(s1, "gm"), s2);
    }
}

另外在排查时还发现了一个比较奇怪的现象:如果因为某种原因(比如手机网络信号不好),导致某个 js 文件(如 jquery.min.js )下载失败,那么很可能在一段时间内,飞书和微信内嵌的浏览器会一直当作这个文件加载不了(相当于即使文件没加载成功也缓存了下来)。由于是偶发的,暂时也没法确定是不是由于内嵌浏览器本地缓存导致的。对于这种情况暂时还没找到什么好的解决方法。

版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:www.liujiajia.me/2023/4/21/t…

Footnotes

  1. 怎么修复 "replaceAll is not a function" JavaScript Error?

  2. 解决js中replaceAll浏览器不兼容问题