【问题标题】:Crossbrowser CTRL+S JavaScript problems跨浏览器 CTRL+S JavaScript 问题
【发布时间】:2016-10-12 22:48:16
【问题描述】:

我看到这是一个非常受欢迎的问题,但我仍然找不到正确的解决方案。

我试图在我的文本区域内按下 Ctrl+s 调用函数(保存)。我发现 Chrome 或 IE 需要“keydown”,而 FireFox 需要“keypress”。

实际上,Firefox 注册“keydown” - 调用我的“警报”,但不阻止浏览器“另存为”对话框。

我尝试将这两个事件都放入,然后 FireFox 阻止了“另存为”对话框,但两次调用了我的警报。

代码如下:

$("#mytextarea").on("keypress keydown",function(e) { 
    if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey)) {
         e.preventDefault();
         alert("Ctrl-s pressed");
         return false;
    }
    return true;
});

JS fiddle - try to open with FF

有人有真正的跨浏览器解决方案吗?

【问题讨论】:

    标签: javascript jquery cross-browser jquery-events


    【解决方案1】:

    为了保存浏览器兼容性,您还可以使用以下 javascript 库之一:

    以 jquery 为例:

    【讨论】:

    • 仍然没有“安全”的 xbrowser 解决方案...检查鼠标会发生什么:jsfiddle.net/jy4kfxeL - Firefox 将发出警报并打开对话窗口
    【解决方案2】:

    我发现提示看起来像工作解决方案: Can't override ctrl+s in Firefox using jQuery Hotkeys

    看起来我应该在 setTimeout 中包装函数... 现在可以了。

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2011-03-25
      • 2013-06-01
      • 1970-01-01
      相关资源
      最近更新 更多