现在的位置: 首页 > 综合 > 正文

Web Worker进行数据交换

2016年09月19日 ⁄ 综合 ⁄ 共 1184字 ⁄ 字号 评论关闭

 demo_workers.js

var i=0;

function timedCount()
{
i=i+1;
postMessage(i);
setTimeout("timedCount()",500);
}

timedCount();


Worker.html

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
<br /><br />

<script>
var w;

function startWorker()
{
if(typeof(Worker)!=="undefined")
{
  if(typeof(w)=="undefined")
    {
    w=new Worker("demo_workers.js");
    }
  w.onmessage = function (event) {
    document.getElementById("result").innerHTML=event.data;
  };
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser
 does not support Web Workers...";
}
}

function stopWorker()
{
w.terminate();
}
</script>

</body>
</html>

在实际访问时,出现

chrome javascript Uncaught SecurityError:
An attempt was made to break through the security policy of the user agent

错误,原因是引用了本地的 demo_workers.js文件,在本地文件系统中访问文件时,chrome会限制同源策略
解决方案是:
  1. 把代码放到服务器上,通过网络访问
  2. 设置chrome,取消同源限制,方法有多种,首先要关闭已经打开的chrome浏览器
    1. 命令行进入到chrome.exe目录,通过命令行启动chrome并传递命令行参数:chrome --disable-web-security
    2. 第二种方法是选中chrome.exe右键:创建快捷方式,选中快捷方式,右键:属性,点击快捷方式选项卡,找到目标栏,在后面添加-args -disable-web-security 得到类似这样的字符串:"C:\Program Files\Google\Chrome\Application\chrome.exe" -args
      -disable-web-security 
      点击确定,以后从这个快捷方式打开的chrome就没有了同源限制

抱歉!评论已关闭.