今天写一个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()方法。