当有人尝试导航到特定页面而不保存其工作时,我弹出一个对话框。我使用Javascript的onbeforeunload事件,效果很好。
现在,当用户在出现的对话框中单击“取消”时,我想运行一些Javascript代码(假设他们不想离开页面)。
这可能吗?我也使用jQuery,所以可能会发生像beforeunloadcancel这样的事件可以绑定到吗?
更新 :的想法是实际上将用户保存并定向到其他网页(如果他们选择了取消)
您可以这样做:
$(function() { $(window).bind('beforeunload', function() { setTimeout(function() { setTimeout(function() { $(document.body).css('background-color', 'red'); }, 1000); },1); return 'are you sure'; }); });
第setTimeout一种方法中的代码具有1ms的延迟。这只是将函数添加到中UIqueue。由于setTimeout异步运行,因此Javascript解释器将继续通过直接调用该return语句来继续,从而触发浏览器modaldialog。这将阻止UIqueue和,从第一个开始的代码将setTimeout不执行,直到关闭模式。如果用户按下“取消”,它将触发另一个setTimeout,它会在大约一秒钟后触发。如果用户单击确定确认,则用户将重定向并且永不触发第二个setTimeout。
setTimeout
UIqueue
return
modaldialog