我有一个有基本表格的网页。在点击"submit“和页面重新加载结果之间有一个不可忽略的等待时间,所以我在用户等待时添加了一些旋转器。
它非常直截了当,下面是HTML:
<div id="loadingBox" style="display:none;">
<!---put the actual loader here--->
</div>
以下是用户单击submit后使旋转器可见的基本事件处理程序:
$("#submitButton").submit(function(e)
{
$("#loadingBox").css('display', 'block');
});
问题是用户可以单击submit,使该框出现,然后单击“转义”或单击“浏览器”按钮以取消页面加载,而旋转器则继续旋转。
我加上这个是为了让旋转器在点击“逃逸”时消失:
$(document).keydown(function (e)
{
if(e.keyCode == 27)
{
$("#loadingBox").css('display', 'none');
}
})
如何检测用户已单击“取消页面加载”按钮?在单击该按钮时,我找不到触发的事件,也找不到反映该按钮的就绪状态或其他属性。我担心的是用户单击cancel load按钮,然后旋转器就不会消失,用户会盯着旋转器,认为页面仍然在做什么,但它没有做任何事情。
发布于 2019-07-10 09:04:22
我就是这样解决我的问题的。
首先,我将页面转换为使用AJAX。我使用的是水瓶,所以这个网页非常有用:https://medium.com/@doobeh/posting-a-wtform-via-ajax-with-flask-b977782edeee
但是,我需要用从AJAX接收到的数据更新现有的Jinja2模板。我最后通过对render_template函数调用jsonify来完成这一任务,如下面所讨论的:Render Jinja after jQuery AJAX request to Flask
但是,我用来折叠/展开模板表部分的按钮无法工作,因为事实证明,事件只适用于页面加载时存在的内容。因此,我不得不委托事件,以便允许事后添加的项触发jquery侦听的事件,如下面所讨论的:https://aiocollective.com/blog/click-doesn-t-work-after-ajax-load-jquery/。
我希望这些链接对其他人有帮助!
发布于 2019-07-09 08:05:06
侦听onbeforeunload
事件。
window.addEventListener("beforeunload", function(event) {
alert("How dare you leave this page?!");
});
https://stackoverflow.com/questions/56956475
复制相似问题