【问题标题】:Creating WebWorker Throws DOM Exception 18 in Safari 5.1.7在 Safari 5.1.7 中创建 WebWorker 引发 DOM 异常 18
【发布时间】:2013-01-30 20:58:24
【问题描述】:

我正在尝试创建 webworker,但在尝试在 Safari 5.1.7 中构建 worker 时遇到 DOM 异常。这发生在某些域上,并且仅在 Safari 中。例如,如果您访问 CNN.com 并输入 var test = new Worker("foo.js") ,您将收到 DOM 异常 18。有人知道为什么会发生这种情况吗?谢谢

只是添加更多细节。我已经在新版本的 Safari 上对此进行了测试,它没有同样的问题。另一个似乎存在类似问题的域示例是 nordstrom.com

【问题讨论】:

  • CNN.com/something 对我来说似乎不是脚本。请告诉我们您实际在做什么,也许提供一些代码甚至演示
  • 脚本路径是什么并不重要,你不能加载任何脚本......你应该能够通过在控制台中输入 test = new Worker("something") 来复制问题
  • 对“foo.js”的请求是否没有以“text/javascript”的内容类型响应并且浏览器对此过于“挑剔”?如果内容类型是“text/html”(或任何其他),则可能是浏览器“认为”您正在尝试与 Web Worker 中不允许的 DOM 交互。
  • @Ramunas 并非如此,我正在客户的网站上实现此功能,并且该路径确实会导致同一域上的有效脚本。不幸的是,出于隐私考虑,我不能在这里分享实际的实现。
  • 出现这个问题是因为“www.cnn.com”将他们的document.domain从“www.cnn.com”重新映射到“cnn.com”。我通过代理 remaps document.domain 的脚本来解决这个问题;当我这样做时,WebWorkers 工作正常。我认为这可能是 Safari 5.1 的错误(这在 Safari 6 中不会发生)。我能预见的唯一解决方案是在加载重新映射域的脚本之前加载使用 WebWorker 的脚本。

标签: javascript web-worker


【解决方案1】:

这是旧版 WebKit 中的一个错误:https://bugs.webkit.org/show_bug.cgi?id=67978

当您设置“document.domain”并在设置域后尝试创建工作人员时会发生这种情况。唯一的解决方法是在设置“document.domain”之前创建工作者。

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2012-11-29
    • 2013-01-09
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多