预防保存弹出窗口的默认在 chrome 中工作,但在火狐中不起作用
preventDefault for save popup is working in chrome but not in firefox
嗨,我喜欢阻止ctrl + s(保存)的默认行为,所以我尝试了以下代码
jQuery(document).bind("keydown", function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
alert("Ctrl+S");
return false;
}
});
但这仅在 chrome 中阻止而不是在火狐中。在Firefox中,保存对话框弹出为什么会发生这种情况,或者我错过了什么。有什么帮助吗?
试试这个....
$(document).bind("keydown", function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
setTimeout(function() {
alert("Ctrl+S");
}, 1000);
return false;
}
});
使用警报将完成线程执行,只有在单击警报的"确定"按钮后,才会再次选取线程。 我只能想象,在这一点上,"preventDefault"还没有被Firefox确认(即使您在警报之前调用它),它继续显示"另存为"对话框。
我使用 setTimeout 将警报延迟 1 秒,尽管我确信使用 0 会产生相同的效果......只需将显示警报的函数(现在是异步)推送到执行堆栈的后面,这将允许浏览器完成 preventDefault 的执行。
我知道你不想要"警报",但我想我会提供行为的解释。
尝试以下代码:
$(document).ready(function(){
$(document).bind('keydown', function(event) {
//19 for Mac Command+S
if (!( String.fromCharCode(event.which).toLowerCase() == 's' && event.ctrlKey) && !(event.which == 19)) return true;
event.preventDefault();
console.log("Ctrl-s pressed");
return false;
});
});
JS小提琴:http://jsfiddle.net/dpHk9/
解释
下面的代码将 unicode 数字转换为相应的字符:
String.fromCharCode(number) //returns A for 65
下面的代码表示控制键:
event.ctrlKey
在 MAC 上,command+s
返回 19
相关文章:
- JS可以在Chrome中工作,但不能在Firefox中工作
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- javascript window.open将无法在Chrome控制台上工作
- 如何编写在Chrome和IE中正常工作的JavaScript
- 只有当Javascript控制台在chrome上打开时,Javascript才能工作
- NaN:Firefox和IE中的NaN,CHROME工作正常
- jquery日期转换chrome工作,但IE和firefox't
- Chrome工作区无法使用源地图和Javascript
- 数组比较在Chrome工作,但不与Chrome IPAD
- 如何获得一个值从选项时选择(此代码为chrome工作)
- HTML表单与javascript得到"在IE,但在Chrome工作
- 简单的脚本与onclick事件在Chrome工作良好,但在Firefox失败
- 在Firefox剑道按钮文本不改变,而在IE和Chrome工作
- Ajax GIF加载器不工作在IE和Firefox(最新),但在Chrome工作
- Firefox返回TypeError: document.getElementById(..)为空,但Chrome工作正
- 纯Javascript: onClick切换行/图像:Firefox/Chrome -工作:IE -不工作
- 为什么if (condition) {statements} else返回;"在Chrome工作
- 我怎么能得到jsFiddle在Chrome工作
- 模态对话框与Mozilla工作,但不与Chrome工作