[英]Handling F5 in JQuery
我有一个网站,我想覆盖F5,以便它不刷新页面,而是执行一些ajax调用来刷新某些部分。 这可能吗?
编辑:因为你们似乎都不明白我为什么要做这样的事情,如果你真的有兴趣那么请访问这些链接:
开源项目(简单的网络终端): http : //code.google.com/p/web-terminal
简单的网络终端的运行演示: http : //web-terminal.net.pine.arvixe.com
实时实施(论坛版): http : //www.u413.com
好吧,你可以这样做(至少在某些浏览器中,我不确定这是否适用于跨浏览器),但它确实是一个非常糟糕的用户体验。
$(document).bind('keypress keydown keyup', function(e) {
if(e.which === 116) {
console.log('blocked');
return false;
}
if(e.which === 82 && e.ctrlKey) {
console.log('blocked');
return false;
}
});
无论如何,即使有效,用户还可以通过其他方式刷新网站。 按ctrl + r
( cmd + r
)或只需按下刷新按钮。 好吧,其他热键组合可以被阻止类似,但无法阻止刷新按钮。
-
最好不要阻止那些默认的浏览器行为,而是优雅地提问。 这可以通过将事件处理程序绑定到onbeforeunload
事件来完成,该事件在卸载站点之前触发。
$(window).bind('beforeunload', function() {
return 'Are you really sure?';
});
除了没有捕获'keypress'事件之外,这与上面接受的答案相同。
如果您捕获'keypress'事件,则还会阻止't'键。 出于某种原因,如果使用'keypress'事件(在chrome调试器中无法看到),则会捕获键码和ASCII键码。 F5键为'116',但't'的ASCII键码也是116,所以使用'keypress'事件可以阻止F5,但你也可以阻止't'应用程序范围。
$(document).bind('keydown keyup', function(e) {
if(e.which === 116) {
console.log('blocked');
return false;
}
if(e.which === 82 && e.ctrlKey) {
console.log('blocked');
return false;
}
});
这是coffeescript只是为了好玩:)
$(document).bind "keydown keyup", (e) ->
if e.keyCode is 116
console.log "blocked"
return false
if e.keyCode is 82 and e.ctrlKey
console.log "blocked"
false
以下是关于如何覆盖F5键以增强用户体验的一个示例。 我正在为我的客户端构建新闻稿编辑器,当用户意外按下F5键时我需要阻止页面重新加载,而是刷新从输入的html代码创建的电子邮件预览。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.