html - 如何让 Worker() 对抗跨域?

标签 html bespin

我一直在研究 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/

相关文章:

javascript - JQuery 中超出了最大调用堆栈大小,无法在 focusout 内触发下一个元素的焦点

php - 在 phpmailer 中无法正确接收电子邮件地址和附件

css - <div> 元素在移动设备上相互堆叠

javascript - Bespin Embedded 中的 OnEdit/OnFocus Hook 或类似功能?

javascript - 我们很快就会有基于 Skywriter 的在线 IDE 吗?

javascript - 在 ACE 编辑器中以编程方式折叠代码

javascript - 通过JS检查宽度元素

javascript - 按数据属性对列表进行排序