Web Worker加载绝对URL

时间:2012-06-26 15:45:16

标签: html5 xmlhttprequest web-worker

Can I load a web worker script from an absolute URL? - 这里的答案是否定的。

然而,无论如何我发现有一个黑客攻击:

var worker; //= new Worker('http://xyz/FSWorker.js');
var xhr = new XMLHttpRequest();
xhr.open("GET", 'http://xyz/FSWorker.js');
xhr.responseType = 'blob';
xhr.onload = function(e) {
    var blob = this.response;
    worker = new Worker(window.URL.createObjectURL(blob));
    fs_ready(); // do more stuff here
};

xhr.send(null);

我不太喜欢这种方法 - 我现在必须在XHR完成时才开始使用worker。另一种选择是与内联工作者一起工作,但这甚至更加丑陋,因为那时我必须将我的所有代码都放在一个巨大的字符串中。

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

您已经发现了Web Workers的一个聪明功能 - 您可以创建几乎任意文本blob。

如果您在当前页面上将脚本加载为<script>节点,则可以使用类似的Blob技术从中创建Web Worker。至于加载远程脚本,relying on XHR就像访问远程脚本的文本内容一样优雅。