【发布时间】:2011-11-07 14:39:18
【问题描述】:
$(document).keydown(function (e) {
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
function_which_does_a_lot_including_ajax_calls();
return false;
}
});
我正在尝试调用 control+S 上的方法,并且,对 function_which_does_a_lot_including_ajax_calls() 的调用会阻止代码及时到达“return false” ,表示浏览器默认提示“是否要保存此网站”窗口。
如果我把它改成简单的:
$(document).keydown(function (e) {
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
// function_which_does_a_lot_including_ajax_calls();
return false;
}
});
... return false 被触发,什么也没有发生(没有默认提示)。
有没有办法我可以做很多事情,但仍然返回 false 以使浏览器不执行其默认行为?谢谢!
【问题讨论】:
-
嗯,keydown 回调涉及到某种“超时”,这有点奇怪......你确定函数没有因为
function_which_does_a_lot_including_ajax_calls内部的异常而中止吗?跨度> -
function_which_does_a_lot_including_ajax_calls甚至有一个提示,所以这可能是个问题。
标签: javascript jquery keyboard-shortcuts