嘿,伙计们我是JavaScript新手,但我想做点什么
我有这个JavaScript计时器脚本,我想打开一个弹出窗口&单击按钮启动计时器,如果已打开的弹出窗口关闭,也会重置并停止计时器。
这是我的计时器代码:
<script type='text/javascript'>//<![CDATA[
window.onload=function(){
var isWaiting = false;
var isRunning = true;
var seconds = 15;
var countdownTimer;
var finalCountdown = false;
function GameTimer() {
var minutes = Math.round((seconds - 30) / 60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('waiting_time').innerHTML = "<i class='fa fa-spin fa-spinner'></i> " + minutes + ":" + remainingSeconds;
if (seconds == 0) {
document.getElementById('waiting_time').innerHTML = "" ;
document.getElementById('step').innerHTML = "<button class='button' onclick='window.location.reload();return false;'><font color='#8d9d29'><i class='fa fa-arrow-circle-right'></i> Next step</font></button>" ;
if (finalCountdown) {
clearInterval(countdownTimer);
} else {
finalCountdown = true;
}
} else {
isWaiting = true;
seconds--;
if (seconds == 0) {
seconds=seconds;}
}
}
countdownTimer = setInterval(GameTimer, 1000);
}//]]>
</script>
这会检查弹出窗口是否已关闭
var child = window.open('http://google.com/','','toolbar=0,status=0,width=926,height=536');
var timer = setInterval(checkChild, 500);
function checkChild() {
if (child.closed) {
/// something
clearInterval(timer);
}
}
我如何合并这两个片段?
答案 0 :(得分:1)
我不确定这是否是您正在寻找的。我不知道我明白你需要什么。
我稍微重构了代码。主要的是我将变量放入一个名为GameObject
<script type='text/javascript'>//<![CDATA[
var GameObject = {
"isWaiting" : false,
"isRunning" : true,
"seconds" : 15,
"finalCountdown" : false,
"child" : null,
"countdownTimer" : null,
"gametimer" : null
};
function onButtonClick() {
//Open the window
GameObject.child = window.open('http://google.com/','','toolbar=0,status=0,width=926,height=536');
//Start the window open check interval
GameObject.gametimer = setInterval(function() {
if (GameObject.child.closed) {
/// something
clearInterval(GameObject.gametimer);
clearInterval(GameObject.countdownTimer);
}
}, 500);
//Start the game timer
GameObject.countdownTimer = setInterval(GameTimer, 1000);
}
function GameTimer() {
var minutes = Math.round((GameObject.seconds - 30) / 60);
var remainingSeconds = GameObject.seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('waiting_time').innerHTML = "<i class='fa fa-spin fa-spinner'></i> " + minutes + ":" + remainingSeconds;
if (GameObject.seconds == 0) {
document.getElementById('waiting_time').innerHTML = "" ;
document.getElementById('step').innerHTML = "<button class='button' onclick='window.location.reload();return false;'><font color='#8d9d29'><i class='fa fa-arrow-circle-right'></i> Next step</font></button>" ;
if (GameObject.finalCountdown) {
clearInterval(GameObject.countdownTimer);
} else {
GameObject.finalCountdown = true;
}
} else {
GameObject.isWaiting = true;
GameObject.seconds--;
if (GameObject.seconds == 0) {
GameObject.seconds = GameObject.seconds;
}
}
}
//]]>
</script>