gpt4 book ai didi

javascript - control + s,返回 false 但仍调用另一个函数

转载 作者:行者123 更新时间:2023-11-28 16:25:55 26 4
gpt4 key购买 nike

$(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_include_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,以便浏览器不执行其默认行为?谢谢!

最佳答案

使用 e.preventDefault() 阻止浏览器的默认行为(类似于 return false)。

示例:

$(document).keydown(function (e) {
if (condition_says_NO_to_default) {
e.preventDefault();
.... //Rest of code

更新:替代方法。下面的代码维护作用域、this 和事件对象引用,同时首先处理 return false 语句:

$(document).keydown(function (e) {
var $this = this; //Save reference for later
setTimeout(function(){
(function(event){
//Your code here
}).call($this, e);
}, 1); // An extremely low timeout.
return false;
});

关于javascript - control + s,返回 false 但仍调用另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com