如何根据窗口Confirm()方法的答案在不同的window.locations之间切换

时间:2019-04-17 08:24:39

标签: javascript settimeout window.location

我有一个呈现测试的页面,如果用户在给出答案并按下提交之前等待了太多时间(180“),则javascript将timeout设置为放弃该页面。 由于种种原因必须这样做,我无法修改承诺。 在页面上显示180“之后,因此,当前代码返回到beginpage.php,用户必须重新输入其唯一ID才能继续测试。

这是简单的javascript代码:

setTimeout(function () {
    window.location.href= "beginningpage.php";
}, 180000);

一切顺利。现在,我需要修改代码以更好地处理案件。我们假设如果用户离开了,它将无法回答警报框。因此,假设我们在这180英寸后推送了一个define()。

如何编写代码,以便-在显示confirm()窗口时-如果没有人单击确认按钮(例如30“),则代码会自动关闭确认窗口,并使页面返回至beginpage.php?

否则,如果用户仍在办公桌前,只是想知道要给出的答案,则必须允许他单击“确定,我急着”继续在页面上说“ 60”。表示在首次显示确认窗口之后,必须将超时设置为其他截止日期,而不是以前的180000,而是60000。

也许使用不同的window.locations.href的想法不合适。

如上所述,代码如何完成我需要的一切?

3 个答案:

答案 0 :(得分:1)

请不要使用确认框...在180秒后显示带有两个按钮的div,然后开始计算您的30秒。

答案 1 :(得分:1)

  

因此,假设我们在那180英寸后推送一个confirm()。

     

如何编写代码,以便-在显示confirm()窗口时-如果没有人单击确认按钮(例如30“),则代码会自动关闭确认窗口,并使页面返回至beginpage.php?

不能。 confirmalertpromopt是1990年代停滞不前的行为。 (通常。随着时间的流逝,浏览器正在慢慢消失。)这意味着在显示过时的窗口时,您的JavaScript代码都无法运行。

相反,请改用现代警报技术(显示“模式” div等),以便您的JavaScript代码可以使用setTimeout在相关时间后放弃。

答案 2 :(得分:1)

您永远无法使用alertconfirm实现这一目标,因为它们会阻止进一步的js执行,直到弹出窗口处于活动状态为止。
您需要一个带有html元素和js函数的自定义模式 您所要做的就是根据clearTimer的响应调用custom confirm modal进行自动页面重新加载。

var x =  document.getElementById("stopReloadBtn")
var reloadTimer
setTimeout(function() {
  x.style.display = "block"
  reloadTimer = setTimeout(function() {
    window.location.href = "beginningpage.php"
  }, 5000)
}, 5000);

function stopReload(){
   clearTimeout(reloadTimer)
   x.style.display = "none"
}
<button id="stopReloadBtn" style="display: none" onclick="stopReload()">Still Here?</button>

  

我已将此代码中的计时器减少到5秒。 5秒后将出现一个按钮。之后,您将有5秒钟的时间单击此按钮,否则页面将重新加载。