web works 显示新线程未被创建,请问works.js 要怎样被主线程调用?

主线程的js 代码直接嵌在html文件内,html文档和works.js路径如图所示:
图片描述

主线程代码如下,”新线程的url,必须在本域下“到底应该怎么操作?:

<script>
var w;

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("js/works.js");//我们在一个外部 JavaScript 中创建我们的 web worker。新线程的url,必须在本域下。
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "抱歉,你的浏览器不支持 Web Workers...";
    }
}
</script>

报错信息如下图,而且我是在本地上运行的代码,没有放在服务器上,浏览器是chrome的,不存在不兼容的情况:
图片描述

阅读 2.1k
1 个回答

好像是你直接打开了html文件,导致了跨域问题。你可以搭建一个服务器环境跑一跑。我刚测试了你的代码,成功运行。

你可以在本地搭建一个服务器环境,模拟同域,进行测试。一下意见几个简单的临时服务器方案。

php5.4以上

可以在当前目录打开命令行,执行

   php -s localhost:8080

然后可以直接访问 http://localhost:8000

python

在当前目录打开命令行,执行

  python -m SimpleHTTPServer
# 默认启动在8000端口

然后打开 http://localhost:8000
如果你有node,可以试试json-server 具体的我也忘了,你可以查查资料。
当然用什么不重要,最重要的是搭建一个服务器环境,解决跨域问题。本地同服务器下所有的资源都是同域

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题