window.atob兼容性写法

window.atob 是 JavaScript 中用于将 base64 编码的字符串解码为原始字符串的方法。它在大多数现代浏览器中都得到支持,但在一些旧版本的浏览器中可能不被支持。

为了兼容性,可以使用以下代码来检测浏览器是否支持 window.atob 方法,并提供替代实现:

if (!window.atob) {
  window.atob = function(encodedString) {
    var base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    var decodedString = '';
    var currentChar, charCode1, charCode2, charCode3, encIndex1, encIndex2, encIndex3, encIndex4;

    for (var i = 0; i < encodedString.length; i += 4) {
      encIndex1 = base64Chars.indexOf(encodedString[i]);
      encIndex2 = base64Chars.indexOf(encodedString[i + 1]);
      encIndex3 = base64Chars.indexOf(encodedString[i + 2]);
      encIndex4 = base64Chars.indexOf(encodedString[i + 3]);

      charCode1 = (encIndex1 << 2) | (encIndex2 >> 4);
      charCode2 = ((encIndex2 & 15) << 4) | (encIndex3 >> 2);
      charCode3 = ((encIndex3 & 3) << 6) | encIndex4;

      decodedString += String.fromCharCode(charCode1);

      if (encIndex3 !== 64) {
        decodedString += String.fromCharCode(charCode2);
      }
      if (encIndex4 !== 64) {
        decodedString += String.fromCharCode(charCode3);
      }
    }

    return decodedString;
  };
}

这段代码会先检测 window.atob 方法是否存在,如果不存在,则定义一个替代实现。这个替代实现会根据 base64 字符串的编码规则来逐个解码字符,并将解码后的字符拼接成最终的原始字符串。注意,这只是一个简单的替代实现,可能不如浏览器原生的方法效率高

你可能感兴趣的:(前端,javascript,开发语言)