2014-04-09 3 views
1

MCQ 퀴즈를 만들고 있는데 각 질문마다 시간이 있습니다. 또한 사용자가 우연히 퀴즈 페이지를 탐색하지 못하도록 내 스크립트에 onbeforeunload을 사용했습니다. 하지만 그 경고가 표시되면 내 setInterval 카운터 중지 작동합니다. 경고가 있더라도 카운트 다운이 멈추지 않게하려면 어떻게해야합니까? 여기서 더 내 문제를 설명하기 위해setInterval이 경고 작업을 중지합니다.

는 대화 상자가 차단 된 FIDDLE

+0

자바 스크립트는 단일 스레드이므로 불가능합니다. 그러나 경고가 나타나는 날짜()를 기록한 다음 date() 경고가 사라지는 경우를 기록 할 수 있습니다. 이 질문에 대한 도움을 얻을 수 있습니다. http://stackoverflow.com/questions/12731865/prevent-onbeforeunload-function-from-pausing-javascript-timer –

답변

4

브라우저입니다. 열려있을 때 모든 스크립트 실행이 중지됩니다. 이 동작은 변경할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. 이 문제에 대한 대체 솔루션은 무엇이 될 수 있습니까? 사용자가 페이지를 새로 고치려고 할 때마다 카운트 다운이 중지되지만 페이지에 머물기로 결정했다는 것을 알게되면 어떻게 될까요? 그에게 각 질문에 대해 여분의 시간을줍니다. –

+3

@KhawerZeshan 자신 만의 모달을 만들어야합니다 ... – webeno

+0

또는 타이머 대신 시간 계산 (이제는 빼기 시작)을 기반으로하십시오. –

2

대신 90 초로 시작하고 매 초마다 1 초씩 줄이려고 시도하는 대신 현재 날짜 + 90 초를 계산하여 종료 날짜를 얻으십시오. 그런 다음 setTimeout의 각 통화에서 종료 날짜까지의 현재 초 수를 계산하십시오.

경고가 표시되어있는 동안에는 타이머가 진행되지 않지만 경고가 해제되면 타이머가 앞으로 이동해야합니다.

+0

하지만 경고 상자가 열려있는 동안에도 계속 실행됩니다. – webeno

+0

경고가 울리는 동안 활성 똑딱 소리가 나지 않지만 타이머가 경고가 해제 될 때 있어야하는 위치로 건너 뜁니다. –

+0

@webeno 수정하십시오. 하지만 경보가 닫히면 다시 조정됩니다 –

2

var timeCount = new Date()을 호출하여 beforeunload()이 호출되고 경과 된 시간/누락 된 초를 계산할 때 시간을 저장하도록 선언 할 수 있습니다. 하지만 그렇지 않으면 무엇 Diodeus 고 말했다.

관련 문제