InvalidStateError:尝试使用不是或不再是可用 javascript 错误的对象



我正在尝试遵循此答案

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');"+ 的东西,我在 blob 行 1 中收到错误InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

下面是该 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]错误。

我已经尝试了不同的方法来输入路径,包括窗口和 linux 样式,尝试了相对路径和完整路径,但它不起作用。

我想,由于某种原因,代码无法在磁盘上找到文件,但不知道为什么。有人可以帮忙吗?

你应该使用文件协议:file:///local.js

相关内容

  • 没有找到相关文章