2010-04-12 5 views
1

웹 작업자 클라이언트에 window.alert를 넣으면 백그라운드 작업자가 작동을 멈 춥니 다. 왜 이렇게됩니까?작업자 스레드의 window.alert

즉 발신자 :

var worker = new Worker("worker.js"); 
// Watch for messages from the worker 
worker.onmessage = function(e){ 
    // The message from the client: 
    e.data 
}; 
worker.postMessage("start"); 

클라이언트 (worker.js)

onmessage = function(e){ 
    if (e.data === "start") { 
    // Do some computation 
    done() 
    } 
}; 

function done(){ 
    alert('don'); // ===> This kills the worker. 
    // Send back the results to the parent page 
    postMessage("done"); 
} 

답변

0

는 사용자가 확인을 클릭 할 때까지 경고가 자바 스크립트 엔진을 정지 나타났습니다있다.

동결하지 않으려면 경고를 사용하지 마십시오. 불을 지르고와 debuging에 대한

:

console.log("bla bla bla"); 

비 잠금 팝업의 경우 :

는에 확인 버튼 숨겨진 DIV합니다. 팝업이 표시 될 때. div를 표시합니다. 사용자가 "확인"을 클릭하면 숨 깁니다.

팝업을 사용하지 말 것을 권합니다. 또한 화면 뒤에서 사용자의 "작업 흐름"(사용자의 집중을 의미)을 깨뜨립니다. :)

+0

작업자 스레드는 console.log를 사용할 수 없습니다. – jas7

+0

@ jas7 전용 작업자는 (이미) 콘솔을 사용할 수 있지만 공유 작업자는 사용할 수 없습니다. – maja

2

웹 작업자가 window.alert에 액세스 할 수 있습니까? 웹 작업자가 DOM 액세스 권한을 얻지 못한다는 것을 알고 있습니다. ..하지 왜 노동자의

하는

if (window && window.alert) { 
    // do your normal thing 
} 
else { 
    postMessage("no support for this"); 
} 
+0

웹 작업자는 'alert()'를 호출 할 수 없습니다. –

0

웹 근로자 당신은 배경에 자바 스크립트 코드를 실행할 수 있습니다. 웹 작업자는 alert() 또는 confirm() 함수를 호출 할 수 없습니다.