Web Worker进行数据交换

本文介绍了如何在浏览器中利用Web Workers实现计数功能,并解决了由于同源策略导致的本地文件访问限制问题。通过将代码部署到服务器,实现了跨域访问,确保了网页应用的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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 οnclick="startWorker()">Start Worker</button>
<button οnclick="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就没有了同源限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值