使用绝对路径而不是亲属上传定义模块中的worker,为什么?

时间:2014-10-09 07:13:24

标签: javascript requirejs web-worker

我有以下模块:

define('jsViz',['require','jquery'],function (require) {
    var scripts = document.getElementsByTagName("script"),
        src = scripts[scripts.length-1].src,
        dotWorker = new Worker("/JSViz/main.js?v=2");
});

scripts[scripts.length-1].src返回domain/dist/js/index.js,这是当前正在执行的脚本的URL。 Worker构造函数接受当前正在执行的脚本的相对路径,因此当我指定/JSViz/main.js时,我假设脚本将从domain/dist/js/JSViz/main.js加载,但浏览器会尝试从domain/JSViz/main.js加载脚本。为什么这样?

PS。模块定义来自r.js优化输出,这是模块命名的原因。

1 个答案:

答案 0 :(得分:1)

根据http://www.w3.org/TR/workers/

  

调用Worker(scriptURL)构造函数时,用户代理必须   执行以下步骤:

     

解析相对于条目脚本基础的scriptURL参数   调用方法时的URL。