我一直在研究 BeSpin,试图让它在我的 CDN 上运行,并且通过转换为使用 JSONP,我通过了对 theme.less 的 XHR 跨域请求。我遇到的下一个问题是新的 Worker(js_file),其中 js_file 位于不同的域中。
我如何/可以为 Worker() 启用跨域?
可以直接给Worker源码吗? (即构建一个超大的 JavaScript 文件,其中嵌入了另一个文件)[这不太理想,但它应该有效]。
最佳答案
试试这个:
- 使用 worker 的代码创建一个函数
- 获取函数的字符串表示形式 (.toString),删除第一行和最后一行。现在您有了一个包含 worker 代码的字符串
- 创建一个新的 BlobBuilder(window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)
- 将工作字符串附加到它
- 调用 getBlob() 获取一个 blob
- 使用窗口的 URL (window.URL || window.webkitURL) 使用 createObjectURL 创建一个对象 url
- 为工作人员使用该 url
这是代码
function getUrlForWorker(workerFunction) {
var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder,
URL = window.URL || window.webkitURL,
mainString = workerFunction.toString(),
bodyString = mainString.substring( mainString.indexOf("{")+1, mainString.lastIndexOf("}") ),
bb = new BlobBuilder()
bb.append(bodyString)
return URL.createObjectURL(bb.getBlob())
}
关于html - 如何让 Worker() 对抗跨域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415382/