我不明白为什么这个工人不能在IE10 HTML5中产生一个子工作者

时间:2013-07-26 22:29:35

标签: javascript internet-explorer-10 web-worker worker

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

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错误的答案,尽管仍然无法实例化子工作:

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

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

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

1 个答案:

答案 0 :(得分:0)

我在同一条船上。

我的计划是从另一个doamin或file://协议加载一个子工作,因为你不能直接从常规的js脚本加载一个。我仍然需要对此进行测试,但我知道Workers/SharedWorkers不受正常的跨源限制政策的约束,除了**,因为当你试图加载一个时(希望如此)只有在从window脚本执行此操作时才会这样做。

另一种方法是使用window.postMessage将消息转发给在另一个window中创建的工作者。

或者,根据我的具体需求,我正在考虑在本地运行无头浏览器,CDN或启用了localhost的{​​{1}}“永久服务器” - 但这很可能仍需要{ {1}}。

希望这有帮助,蒂姆!

如果找到答案,请回复,嗯?