WKWebView Web worker抛出错误" Dom异常18返回错误。"

时间:2016-09-16 08:38:41

标签: javascript ios cordova web-worker wkwebview

我正在使用PhoneGap编写应用程序。我想使用javascript Web Worker。它适用于Android。它也可以在iOS上使用UIWebView。

我想在iOS 9中使用WKWebView。我尝试使用cordova-plugin-file成功读取本地文件夹中的.txt文件。

我使用了以下教程: https://www.scirra.com/blog/ashley/25/hacking-something-useful-out-of-wkwebview

但这并没有解决它......

new Worker ('js/tested.js');
Dom Exception 18 returns an error.
new Worker ('www/js/tested.js');
Dom Exception 18 returns an error.

我尝试指定工作者javascript文件的完整路径,但是我得到了同样的错误:

new Worker (file_path+'js/tested.js');
Dom Exception 18 returns an error.

那么如何创建工人?

1 个答案:

答案 0 :(得分:1)

有效!

Web workers without a separate Javascript file?

        var worker_js = null;

        function fetchLocalFileViaCordova(filename, successCallback, errorCallback)
        {
            var path = cordova.file.applicationDirectory + "www/" + filename;

            window.resolveLocalFileSystemURL(path, function (entry)
            {
                entry.file(successCallback, errorCallback);
            }, errorCallback);
        };

        function fetchLocalFileViaCordovaAsText(filename, successCallback, errorCallback)
        {
            fetchLocalFileViaCordova(filename, function (file)
            {
                var reader = new FileReader();

                reader.onload = function (e)
                {
                    successCallback(e.target.result);
                };

                reader.onerror = errorCallback;
                reader.readAsText(file);

            }, errorCallback);
        };

        fetchLocalFileViaCordovaAsText("js/worker.js", function (js_script) { // Worker WKWebView
            worker_js = window.URL.createObjectURL(
                new Blob([js_script], { type: "text/javascript" })
            );
        });

        if (worker_js != null) {
            backgroundEngine = new Worker(worker_js);
        } else {
            backgroundEngine = new Worker("js/worker.js");
        }