Внедрение скриптов через blob желательно? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь загрузить файлы javascript через веб-воркеров, используя XHR и вводя их в тело через URL-адрес blob. Целесообразно ли это делать?

Пример кода:

var worker = "https://wrapperbi.com/worker/worker.js";
            let scriptWrappers = 'importScripts(\'' + worker + '\')', //No I18N
            workerPaths = window.URL.createObjectURL(new Blob([scriptWrappers])),
            dataObj = {'responseType':'blob', 'requestURL': "https://wrapperbi.com/js/manifest.js"};
            let assetsWorkerss = new Worker(workerPaths);
            assetsWorkerss.postMessage(dataObj);
            assetsWorkerss.onmessage = function (event) {

                var script = document.createElement('script'),
                    src = URL.createObjectURL(event.data);

                script.src = src;
                document.body.appendChild(script);

Пример кода рабочего файла:

onmessage = function (event) {

        var requestType = event.data.requestType ? event.data.requestType : 'GET',
            isAsync = typeof event.data.isAsync === "undefined" ? true : event.data.isAsync,
            responseType = event.data.responseType ? event.data.responseType : 'json',
            xhr = new XMLHttpRequest();

        xhr.open(requestType, event.data.requestURL, isAsync);

        xhr.onreadystatechange = function() {
                if(this.readyState === 4 && this.status === 200){
                        postMessage(this.response);
                }
        };

        xhr.onerror = function () {
                postMessage(this.status);
        };

        xhr.responseType = responseType;

        if(event.data.isCrossDomain) {
                xhr.withCredentials = event.data.isCrossDomain;
        }

        xhr.send();
}
...