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