html5 web worker terminate后对象存在问题

 <!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确实可以,但是如果这样连续点击开始按钮的话,会导致有两个计时器在运行。这时点击停止的话也只会停止一个,另一个将不会关闭(即使再点击停止)。
这样的话难道只有点击了开始后就把开始屏蔽,等到点击停止后才把开始按钮打开?