2

我在下面这个例子:http: //www.whatwg.org/specs/web-workers/current-work/

page.html

<!DOCTYPE HTML>
<html>
 <head>
  <title>Worker example: One-core computation</title>
 </head>
 <body>
  <p>The highest prime number discovered so far is: <output id="result"></output></p>
  <script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
  </script>
 </body>
</html>

worker.js

var n = 1;
search: while (true) {
  n += 1;
  for (var i = 2; i <= Math.sqrt(n); i += 1)
    if (n % i == 0)
     continue search;
  // found a prime!
  postMessage(n);
}

此示例在 Mac OSX 上的 firefox 和 Safari 版本 5.0.2 (6533.18.5) 中运行良好,但在 chrome 中无法运行。当我调试它时,worker.js 甚至没有被列为来源之一。奇怪的是,同一网站上的示例页面链接在 chrome 中可以正常工作,这与我的本地代码相同。但是我的本地代码在 chrome 中不起作用。

当我尝试像这样在 Javascript 调试器中手动运行代码时

var w = new Worker('worker.js')

我收到一条错误消息:

Error: SECURITY_ERR: DOM Exception 18

其他人有过这种经历吗?任何人都可以提出解决方案吗?

谢谢

4

2 回答 2

2

您是在file:///协议中查看此文件还是在查看此文件http://?您必须为该页面提供服务,以便安全性正确处理它。

未捕获的错误:SECURITY_ERR:当我尝试设置 cookie 时出现 DOM 异常 18

于 2011-01-05T09:10:37.723 回答
0

rxgx 是正确的,我经常看到这个错误。至于解决方案,要么购买一些便宜的共享主机进行开发,要么在你自己的机器上运行一个 Web 服务器。对于 Windows,下载并安装 Apache 基金会提供的 Apache 安装程序,然后按照说明进行操作。对于 Mac OS X,只需在系统偏好设置的共享部分启用 Web 共享。对于 Linux,通过包管理器安装 apache 或 lighttpd 包。

于 2011-01-05T11:57:33.820 回答