postMessage()通常のファイルを参照できないため、を介して1つまたは複数の関数をWebワーカーに渡したいと思います。
Webワーカーを開始するために、(Blobから作成された)オブジェクトURLをWorkerコンストラクターに渡します。次に、メッセージを渡しますが、これまでのところ、メッセージに関数を入れることはできません。
(JSON)メッセージに関数を直接含めることはできません(ここで規定されています)。importScriptsは理論的には許可されていますが、これまでChromeまたはFirefoxで使用することはできませんでした。
htmlファイルの本文:
<div id="divText">1234</div>
<script>
    var greeter = function greet(name) {
        return "hello " + name;
    };
    function webWorkerWorker() {
        self.postMessage("started1");
        self.onmessage = function(event) {
            importScripts(event.data.content);
            self.postMessage("importScripts success");
            var result = greeter("john");
            self.postMessage(result);
        };
    }
    var functionBody = mylib.extractFunctionBody(webWorkerWorker);
    var functionBlob = mylib.createBlob([functionBody]);
    var functionUrl = mylib.createObjectURL(functionBlob);
    var functionBody2 = mylib.extractFunctionBody(greeter);
    var functionBlob2 = mylib.createBlob([greeter]);
    var functionUrl2 = mylib.createObjectURL(functionBlob2);
    var worker = new Worker(functionUrl);
    worker.onmessage = function(event) {
        document.getElementById("divText").innerHTML = event.data;
    }
    worker.postMessage({
                type: "init",
                content: functionUrl2
            });
</script>
現在、divText値が「importScriptssuccess」に設定されています。
私は何か間違ったことをしていますか?関数をWebワーカーに渡すことができる別の方法はありますか?それとも不可能ですか?