【发布时间】: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