今天写一个web workers的小demo,代码比较简单,如下:
function test(){ if(typeof(Worker)!=="undefined"){ var work = new Worker("webwork.js"); worker.onmessage =function(event){ var data = event.data; document.getElementById("resultDiv").innerHTML=data; }; worker.postmessage(100); }else{ alert("不支持webwork"); } }
但通过本地浏览器直接打开该HTML页面时,却一直报出如下异常:
Uncaught Error:SECURITY_ERR:DOM Excption 18
出错定位在:
var work = new Worker("webwork.js");分析发现,JS跨域限制不能访问非同一域名下的数据,而本地打开是没有域名的,故JS认为你是跨域了,故出现了SECURITY_ERR异常。若要继续测试,就将这个文件扔到某个服务器下,比如TOMCAT下即可。
其它需要额外引用资源文件的,都会存在同样问题,例如:canvas中调用getImgData()方法。