6

私はここで頭がいっぱいです。windowWeb ワーカーがオブジェクトにアクセスできないことを知って、これを行う方法はありますか? 助けてください!

4

2 に答える 2

2

これを行う方法はありません。Crypto クラスとメソッドは「ネイティブ コード」であり、ブラウザーの下位レベルで実装されているため、コードを抽出して別の場所に移動することはできません。Chrome の Transferrable Objectsオブジェクトを使用してみましたが、現在のコンテキストから消去されてワーカーに渡されますが、エラーがスローされます。暗号 API を DOM に結合する必要はないと思います (スレッドセーフではないため、WebWorkers は DOM に触れません) が、以前に暗号を実装したことはありません。Node には非同期 API があるので、少なくとも私にはスレッドセーフであるべきだと思われます。

http://cl.ly/image/0r0P3m3D2h07 <-検査window.crypto

http://cl.ly/image/0G1G0F1Y0d3Z <- 暗号を WebWorker スローに渡すサンプル コード。

私は WebWorker スクリプトを作成して、Chrome と Firefox の実装が異なることを確認しました。残念ながら、私は間違っていました

私はW3C Web Crypto API Proposalの作成者に電子メールを送信しました。あなたも送信する必要があります。ドラフトには現時点で未解決の問題がいくつかあるようですので、変更される可能性があります。非同期 API を使用するか、cryptoWeb Workers で API を使用できるようにすることは、私にとって完全に合理的だと思われます。メインイベントループをブロックするのは悪いことのようです。

于 2012-10-22T03:10:05.480 に答える