Javascript 在IE 11中使用SublecryPto

Javascript 在IE 11中使用SublecryPto,javascript,Javascript,我正在尝试让子线程与IE 11一起工作。具体来说,我只是想简单地加密一些东西,让我开始,我已经能够为AES-CBC生成一个密钥,但是当我尝试加密时,我得到一个错误:“类型不匹配错误” 我有一个问题: 我认为输入数据很可能是错误的类型,但Microsoft文档不清楚。它说它需要是一个ArrayBufferView,但据我所知,UINT16阵列应该满足它。我找到了答案 事实证明IE11返回的是一个事件,而不是直接返回结果。因此,我的示例代码变成: window.msCrypto.subtle.gen

我正在尝试让子线程与IE 11一起工作。具体来说,我只是想简单地加密一些东西,让我开始,我已经能够为AES-CBC生成一个密钥,但是当我尝试加密时,我得到一个错误:“类型不匹配错误”

我有一个问题:

我认为输入数据很可能是错误的类型,但Microsoft文档不清楚。它说它需要是一个ArrayBufferView,但据我所知,UINT16阵列应该满足它。

我找到了答案

事实证明IE11返回的是一个事件,而不是直接返回结果。因此,我的示例代码变成:

window.msCrypto.subtle.generateKey(
                { name: 'AES-CBC', length: 256 },
                false,
                ['encrypt']
                )
                .oncomplete = function (e) {
                    var key = e.target.result;

                    try {
                        window.msCrypto.subtle.encrypt(
                            {
                                name: "AES-CBC",
                                iv: initialisationVector
                            },
                            key, //from generateKey or importKey above
                            new Uint16Array(currentArrayBuffer) //ArrayBuffer of data you want to encrypt
                            ).oncomplete = function (e) {
                                var encrypted = e.target.result;

                                alert(3 + "; " + ab2str(encrypted));
                            };
                    } catch (err) {
                        alert(err);
                    }
                };
这就是我们遵守规范的原因

window.msCrypto.subtle.generateKey(
                { name: 'AES-CBC', length: 256 },
                false,
                ['encrypt']
                )
                .oncomplete = function (e) {
                    var key = e.target.result;

                    try {
                        window.msCrypto.subtle.encrypt(
                            {
                                name: "AES-CBC",
                                iv: initialisationVector
                            },
                            key, //from generateKey or importKey above
                            new Uint16Array(currentArrayBuffer) //ArrayBuffer of data you want to encrypt
                            ).oncomplete = function (e) {
                                var encrypted = e.target.result;

                                alert(3 + "; " + ab2str(encrypted));
                            };
                    } catch (err) {
                        alert(err);
                    }
                };