我有一个页面提供测试,其中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的想法不正确。
如上所述,如何完成我需要的所有代码?
只是不要使用确认框... 180秒后用两个按钮显示一个div,然后开始计算你的30秒。
所以,假设我们在那些180“之后推送确认()。
如何编写代码,以便 - 当显示confirm()窗口时 - 如果没有人点击确认按钮(比方说30“),代码会自动关闭确认窗口并让页面返回到beginningpage.php?
你不能。 confirm
,alert
和promopt
是20世纪90年代的停留世界。 (主要是。随着时间的推移,浏览器会慢慢侵蚀。)这意味着当古老的窗口显示时,你的JavaScript代码都无法运行。
相反,切换到使用现代警报技术(显示“模态”div等),以便您的JavaScript代码可以使用setTimeout
在相关的时间后放弃。
你永远无法通过alert
或confirm
实现这一点,因为它们会阻止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秒钟点击此按钮,否则页面将重新加载。