我正在使用onbeforeunload
事件在关闭页面时执行操作。
我不希望在进行刷新
/ F5操作时触发该事件。
是否有其他事件或方法可以实现这一点?
我正在使用onbeforeunload
事件在关闭页面时执行操作。
我不希望在进行刷新
/ F5操作时触发该事件。
是否有其他事件或方法可以实现这一点?
很遗憾,onbeforeunload
事件监听浏览器中页面的状态。转到另一个页面或刷新将更改页面状态,这意味着onbeforeunload
将被触发。
所以我认为只捕获刷新不可能。
但是,如果您通过JavaScript监听并防止Keypress
,则可以实现。
可以通过F5和CtrlR键进行刷新,因此您的目标是防止这些操作。
使用jQuery的.keydown(),您可以检测这些键码:
对于CtrlR
$(document).keydown(function (e) {
if (e.keyCode == 65 && e.ctrlKey) {
e.preventDefault();
}
});
$(document).keydown(function (e) {
if (e.which || e.keyCode) == 116) {
e.preventDefault();
}
});
$(document).ready(function(){
window.onbeforeunload = PopIt;
$("a").click(function(){ window.onbeforeunload = UnPopIt; });
$(document).keydown(function(e){
if ((e.keyCode == 82 && e.ctrlKey) || (e.keyCode == 116)) {
window.onbeforeunload = UnPopIt;
}
});
});
function PopIt() { return "My message before leaving"; }
function UnPopIt() { /* nothing to return */ }