Worker构造函数是否接受相对URL?

时间:2015-06-28 10:41:23

标签: javascript multithreading web-worker

我想知道root/ +---js/ | +--workers/ | | +--some-worker.js | +--index.js +---index.html 构造函数是否接受相对路径。例如,拥有如下文件结构:

index.html

如果index.js加载index.jsvar someWorker = new Worker("./workers/some-worker.js"); 执行如下操作:

<domain>/workers/some-worker.js

这可行吗?好吧,不。奇怪的是它将网址解析为<domain>/js/workers/some-worker.js

这个问题有解决方案吗?我希望改为加载new Worker("workers/some-worker.js")

如何让/js/workers/some-worker.js解析到相关目录(在此示例/js/中,因为它是从{{1}}调用的)?

1 个答案:

答案 0 :(得分:2)

您无法使用相对网址。另一件事是,它接受相对于域的相对URL。所以,它是:

  • 绝对网址
  • 域的相对URL

除此之外别无其他。您可以参考MDN Worker()了解更多信息。

此外,您还可以通过获取当前位置来设置URL。所以你这样做了:

var someWorker = new Worker(location.href + "/workers/some-worker.js");

或者确切地说,你可以这样做:

currentPath = location.href.split("#");
if (currentPath.length > 1)
  currentPath = currentPath[0];
currentPath = location.href.split("?");
if (currentPath.length > 1)
  currentPath = currentPath[0];
var someWorker = new Worker(currentPath + "/workers/some-worker.js");

希望这有帮助! :)