0

我的 Scripts 文件夹中有一个 Worker.js 文件和一个 Subworker.js 文件。创建一个工人没问题,我可以在调试器中单步执行它的代码;但是当我希望该工作人员产生一个子工作人员时,它并没有被创建,并且我无法在调试器中单步执行子工作人员代码文件。

In myPage.htm script block:
var worker = new Worker("Scripts/Worker.js");   // Succeeds

In Worker.js script file:
var subworker = new Worker("Subworker.js");   //without the folder name  FAILS

IE10 开发者工具网络控制台显示如下:

URL....................Method...Result..Type.......................Received.......Taken......Initiator
/Scripts/Worker.js.....GET......200.....application/x-javascript...1.00KB..........<1ms......webworker
/Scripts/Subworker.js..GET......404.....text/html..................2.50KB..........239.29s...webworker

编辑:找到了 404 错误的答案,尽管仍然无法实例化 subworker:

         var subworker = new Worker("..Subworker.js");

EDIT2:还发现导致使用当前版本的脚本的以下技巧会产生 400 错误:

         var subworker = new Worker("..Subworker.js?version=2.0");
4

1 回答 1

0

我在同一条船上。

我的计划是从另一个域或协议加载一个 subworker,file://因为您不能直接从常规 js 脚本加载一个。我仍然需要对此进行测试,但我知道它Workers/SharedWorkers不受正常的Cross-Origin Restriction Policy 的约束,除非**当您尝试加载一个时(希望仅在从window脚本执行此操作时)。

另一种方法是用于window.postMessage将消息转发到它在 other 中创建的 Worker window

或者,出于我的特定需求,我正在考虑在本地运行无头浏览器、CDN 或启用的localhost“永久服务器” CORS——但这很可能仍然需要window.postMessage().

希望这会有所帮助,蒂姆!

如果您找到答案,请回帖,嗯?

于 2013-08-15T00:03:24.543 回答