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

标签 javascript multithreading web-worker

我想知道 Worker接受相对路径的构造函数。例如,文件结构如下:

root/
+---js/
|   +--workers/
|   |  +--some-worker.js
|   +--index.js
+---index.html

如果index.html负载 index.jsindex.js做这样的事情:

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

这能正常工作吗?好吧,不。奇怪的是它将 url 解析为 <domain>/workers/some-worker.js .

这个问题有解决办法吗?我希望加载 <domain>/js/workers/some-worker.js相反。

如何制作new Worker("workers/some-worker.js")解析到相对目录(在本例中为 /js/workers/some-worker.js ,因为它是从 /js/ 调用的)?

最佳答案

您不能为此使用相对 URL。另一件事是,它接受相对于域的相对 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");

希望对您有所帮助! :)

关于javascript - Worker 构造函数是否接受相对 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098864/

相关文章:

javascript - Node.js 中 CPU 密集型函数的 Web Worker 与 child_process

javascript - 在 html5 中创建 Web Worker 时使用 setTimeout()

javascript - 执行后,window.setTimeout() 抛出 'Uncaught TypeError: undefined is not a function' ?

javascript - Angularjs - ng-route 在 IE9 上不工作 - 不显示 View

ios - UIDocument & NSFileWrapper 架构和性能

javascript - 将 WebSockets 移入工作线程的原因

javascript - 在客户端编译和渲染复杂的 Dust.js 模板

javascript - Ajax GET 严重失败

java 检测对象中没有其他线程

Java EE 应用程序中用于后台服务的 Java 线程(设置守护进程和优先级)?