cklwblove / blog

记录日常遇到的bug
1 stars 0 forks source link

String.prototype.replaceAll 兼容性问题 #106

Open cklwblove opened 2 years ago

cklwblove commented 2 years ago

image

使用 uni-app 开发小程序的时候,发现的此问题。支付宝小程序的时候会报错,uc webview 不支持此方法。需要使用 polyfill(垫片)解决。

/**
 * String.prototype.replaceAll() polyfill
 * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/
 * @author Chris Ferdinandi
 * @license MIT
 */
if (!String.prototype.replaceAll) {
        String.prototype.replaceAll = function(str, newStr){

                // If a regex pattern
                if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
                        return this.replace(str, newStr);
                }

                // If a string
                return this.replace(new RegExp(str, 'g'), newStr);

        };
}