2016-09-16 110 views
1

我正在使用PhoneGap編寫應用程序。我想使用JavaScript Web Worker。它在Android上正常工作。它也適用於iOS和UIWebView。WKWebView web worker引發錯誤「Dom Exception 18返回錯誤。」

我想在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. 

那麼如何創建工人?

+0

請看看這個:http://stackoverflow.com/questions/2704929/uncaught-error-security-err-dom-exception-18-when-i-try -to-set-a-cookie – Roman

+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"); 
     }