抓住“命令”R在 Safari 中使用 JQuery

发布于 2024-12-09 13:11:24 字数 577 浏览 0 评论 0 原文

我需要拦截 Safari 中的浏览器重新加载功能(我知道这通常不是人们应该做的事情,但在我的情况下这是有意义的)。

对于 Windows,我只需这样做:

$(document).keydown(function(event) {
    if ( event.which == 116 ) {
        restart();
        return false;
    }
});

我是否需要使用 JQuery 插件同时捕获两个键,或者 这是否已经以某种形式在 JQuery 中实现?

另外,Mac 下的键码是否相同因为它们在窗户下面? (“Command”是键码“17”,“r”是“19”?)还是命令键是“55”,“r”是“15”?

(使用此来源:http://boredzo.org /blog/archives/2007-05-22/virtual-key-codes

I need to intercept the browser-reload-functionality in Safari (I know this is usually not something one should do, but in my case this makes sense).

For Windows I just do this:

$(document).keydown(function(event) {
    if ( event.which == 116 ) {
        restart();
        return false;
    }
});

Do I need to use a JQuery Plugin to capture two Keys at the same time or is this already implemented in JQuery in some form?

Also, are the keycodes under Mac the same as they are under windows?
("Command" being the keycode "17" and "r" being "19"?) or is it "55" for the command key and "15" for "r"?

(using this source: http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

阳光下的泡沫是彩色的 2024-12-16 13:11:24

有一个 Jquery 插件可以捕获键盘事件,最好的部分是它允许您使用按键事件的名称来处理它们。就像如果你想捕获 CTRL + R 那么你不必担心关键代码,插件会自行处理这个问题。

在这里查看:https://keithamus.github.io/jwerty/

There is a Jquery plugin to capture keyboard events and th best part is that it will allow you to handle the key events with their names. like if you want to capture CTRL + R then you need not to worry about the key codes, the plugin will handle this by itself.

Check it out here: https://keithamus.github.io/jwerty/

温柔戏命师 2024-12-16 13:11:24

我想我不需要使用插件就可以解决这个问题。稍后我会验证它是否也适用于 Mac(我没有 Mac),但它适用于 PC 上的 CTRL+R:

var keys = {};

$(document).ready(function(){
    $(document).keydown(function(event) {
        keys[event.which] = true;

        //CTRL+R on a PC    
        if(keys[17] && keys[82])
        {
            restart();
            return false;
        }   

        //COMMAND+R an a Mac    
        if(keys[81] && keys[91])
        {
            restart();
            return false;
        }       
    });

    $(document).keyup(function (event) {
        delete keys[event.which];
    });
});

这个帮助我实现了这一目标:jQuery .keypress() 可以同时检测多个按键吗?

I think I figured it out without having to use a plugin. I'll verify if it also works on the Mac later (I don't own one), but it works for CTRL+R on a PC:

var keys = {};

$(document).ready(function(){
    $(document).keydown(function(event) {
        keys[event.which] = true;

        //CTRL+R on a PC    
        if(keys[17] && keys[82])
        {
            restart();
            return false;
        }   

        //COMMAND+R an a Mac    
        if(keys[81] && keys[91])
        {
            restart();
            return false;
        }       
    });

    $(document).keyup(function (event) {
        delete keys[event.which];
    });
});

This one helped me get there: Can jQuery .keypress() detect more than one key at the same time?

鲸落 2024-12-16 13:11:24

您可以使用以下代码在 Mac 上捕获 + R

$(document).on( 'keydown', function(event){
    if( event.which === 82 && event.metaKey ) {
        alert( 'Your changes will be lost, are you sure to refresh?' );
    }
});

.metaKey 代表 Mac 上的 ,< PC 上的 kbd>⊞ 键。

You can catch + R on Mac using the next code:

$(document).on( 'keydown', function(event){
    if( event.which === 82 && event.metaKey ) {
        alert( 'Your changes will be lost, are you sure to refresh?' );
    }
});

.metaKey stands for on Mac and key on PC.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文