codecamp

window方法:btoa()

btoa()方法

该WindowOrWorkerGlobalScope.btoa()方法从String对象创建一个base-64编码的ASCII字符串,其中字符串中的每个字符都被视为二进制数据的字节。

注意:由于此函数将每个字符视为二进制数据的字节,无论实际构成字符的字节数如何,如果任何字符的代码点超出范围0x00至0xFF ,则抛出InvalidCharacterError异常。

btoa()方法语法

var encodedData = scope.btoa(stringToEncode);

参数

stringToEncode
一个字符串,其字符分别表示要编码为ASCII的二进制数据的单个字节。

返回值

一个包含 stringToEncode 的 Base64 表示形式的字符串。

btoa()方法示例

var encodedData = window.btoa('Hello, world'); // encode a string
var decodedData = window.atob(encodedData); // decode the string

笔记

您可以使用此方法对可能导致通信问题的数据进行编码,然后将其传输,然后再使用该atob()方法对数据进行解码。例如,您可以编码控制字符(例如,ASCII值0到31)。

btoa()也可用于在JavaScript中实现的XPCOM组件,即使Window不是组件中的全局对象。

Unicode字符串

在大多数浏览器中,在Unicode字符串上调用btoa()将导致InvalidCharacterError异常。

一种选择是转义任何扩展字符,以便实际编码的字符串是原始字符的ASCII表示形式。考虑这个例子,JohanSundström指出:

// ucs-2 string to base64 encoded ascii
function utoa(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to ucs-2 string
function atou(str) {
    return decodeURIComponent(escape(window.atob(str)));
}
// Usage:
utoa('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
atou('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"

utoa('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
atou('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"

规范

规范 状态 注释
HTML Living Standard 
规范中“WindowOrWorkerGlobalScope.btoa()”的定义。
Living Standard
方法移动到最新规范中的WindowOrWorkerGlobalScopemixin。
HTML Living Standard 
规范中“WindowBase64.btoa()”的定义。
Living Standard
自最新快照以来没有任何变化,HTML 5.1。
HTML 5.1 
该规范中“WindowBase64.btoa()”的定义。
Recommendation
HTML Living Standard快照。没有改变。
HTML5 
该规范中“WindowBase64.btoa()”的定义。
Recommendation
HTML Living Standard快照创建WindowBase64(在其之前的目标上的属性)。

浏览器兼容性

电脑端 移动端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview Chrome for Android
Edge Mobile Firefox for Android
Opera for Android
iOS Safari
基本支持 支持 支持 支持:1 支持:10 支持 支持 支持 支持 支持:4 支持
window方法:blur()
window方法:cancelAnimationFrame()
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Fetch API官方文档指南

Fetch API方法

WindowOrWorkerGlobalScope执行者:window

window属性

WindowOrWorkerGlobalScope执行者:WorkerGlobalScope

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }