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。另一种选择是与内联工作者一起工作,但这甚至更加丑陋,因为那时我必须将我的所有代码都放在一个巨大的字符串中。
有没有更好的方法呢?
答案 0 :(得分:2)
您已经发现了Web Workers的一个聪明功能 - 您可以创建几乎任意文本blob。
如果您在当前页面上将脚本加载为<script>
节点,则可以使用类似的Blob
技术从中创建Web Worker。至于加载远程脚本,relying on XHR
就像访问远程脚本的文本内容一样优雅。