<!DOCTYPE html>
<html>
<body>
<p>计数: <output id="result"></output></p>
<button onclick="startWorker()">开始 Worker</button>
<button onclick="stopWorker()">停止 Worker</button>
<br /><br />
<script>
var w;
function startWorker()
{
if(typeof(Worker)!=="undefined")
{
alert("w="+w);
if(typeof(w)=="undefined")
{
w=new Worker("/example/html5/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>
/*
当点击开始worker按钮后,再点停止worker按钮的情况下,再点击开始worker按钮会失败,有什么解决方案,让可以开始worker和停止worker多次点击。
W3CSchool上面的例子
http://www.w3school.com.cn/tiy/t.asp?f=html5_webworker
*/
你应该用setInterval来写计时的东西
var timer;
timer = setInterval(function(){
/**这里写计时的方法**/
});
//停止计时的方法
clearInterval(timer);
terminate这个方法好像是终止了所有的任务吧
重新new一个Worker就行了,去掉typeof那句
function startWorker()
{
if(typeof(Worker)!=="undefined")
{
w=new Worker("/example/html5/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...";
}
}
我试过去掉typdeof确实可以,但是如果这样连续点击开始按钮的话,会导致有两个计时器在运行。这时点击停止的话也只会停止一个,另一个将不会关闭(即使再点击停止)。
这样的话难道只有点击了开始后就把开始屏蔽,等到点击停止后才把开始按钮打开?