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

问题描述 投票:0回答:3

我有一个页面提供测试,其中javascript设置timeOut放弃页面如果用户在给出答案并按提交之前等待太多(180“)。它必须由于各种原因而完成,我无法修改在页面上180“之后,当前代码返回到beginpage.php,用户必须重新输入其唯一ID才能继续测试。

这是简单的JavaScript代码:

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

一切顺利。现在我需要修改代码以更好地管理案例。我们假设如果用户离开,它将无法回答警告框。所以,假设我们在那些180“之后推送确认()。

如何编写代码,以便 - 当显示confirm()窗口时 - 如果没有人点击确认按钮(比方说30“),代码会自动关闭确认窗口并让页面返回到beginningpage.php?

否则,如果用户仍然在他的办公桌旁并且只是想知道给出的答案,他必须有可能点击“确定,我快点”留在页面上再说60“。这意味着之后首次显示确认窗口时,超时必须设置为不同的截止日期,而不是之前的180000,而是60000。

也许使用不同的window.locations.href的想法不正确。

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

javascript settimeout window.location
3个回答
1
投票

只是不要使用确认框... 180秒后用两个按钮显示一个div,然后开始计算你的30秒。


1
投票

所以,假设我们在那些180“之后推送确认()。

如何编写代码,以便 - 当显示confirm()窗口时 - 如果没有人点击确认按钮(比方说30“),代码会自动关闭确认窗口并让页面返回到beginningpage.php?

你不能。 confirmalertpromopt是20世纪90年代的停留世界。 (主要是。随着时间的推移,浏览器会慢慢侵蚀。)这意味着当古老的窗口显示时,你的JavaScript代码都无法运行。

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


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秒钟点击此按钮,否则页面将重新加载。

© www.soinside.com 2019 - 2024. All rights reserved.