我正在尝试遵循这个答案
https://stackoverflow.com/a/28213834/632224
让一些文件在浏览器中散列,但是当我替换
"importScripts('http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js');"+
像"importScripts('path to local copy of md5.js');"+
我 InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
在 blob 第 1 行出现错误。
这是该 blob 的内容:
importScripts('path to local copy of md5.js');
var md5, cryptoType;
self.onmessage = function webWorkerOnMessage(e){
function arrayBufferToWordArray(ab) {
var i8a = new Uint8Array(ab);
var a = [];
for (var i = 0; i < i8a.length; i += 4) {
a.push(i8a[i] << 24 | i8a[i + 1] << 16 | i8a[i + 2] << 8 | i8a[i + 3]);
}
return CryptoJS.lib.WordArray.create(a, i8a.length);
}
if (e.data.type === "create") {
md5 = CryptoJS.algo.MD5.create();
postMessage({type: "create"});
} else if (e.data.type === "update") {
md5.update(arrayBufferToWordArray(e.data.chunk));
postMessage({type: "update"});
} else if (e.data.type === "finish") {
postMessage({type: "finish", hash: ""+md5.finalize()});
}
}
更新:FF 从问题标题中抛出错误,当我在 chrome 中尝试代码时,我得到了Uncaught [object DOMException]
错误。
我尝试了不同的方法来输入路径,包括 windows 和 linux 风格,尝试了相对路径和完整路径,但它不起作用。
我想,由于某种原因,代码在磁盘上找不到文件,但不知道为什么。有人可以帮忙吗?