Попытка связать клавишу Alt Gr, и это не работает в Chrome - PullRequest
0 голосов
/ 13 июня 2018

Ранее хорошо работал во всех браузерах, но по какой-то причине ALT GR не работал в Chrome.Я совершенно не в себе, чтобы заставить это работать ..

Работа с CTRL + ALT + Q во всех браузерах

Использование Chrome версии 67.0.3396.87 (версия Officiell) (64-разрядная версия)

$(document).on("keydown", function(event)
{
    console.log(event.ctrlKey);
    console.log(event.altKey);
        
    // AltGr+Q
    if(event.which === 81 && event.ctrlKey && event.altKey)
    {          
        $("#notes").empty('');
        $("#notes").append("Success!<br/>" , " Event: ", event.which, " ctrlKey: ", event.ctrlKey, " Altkey: ", event.altKey);
        return false;
     }
     else
     {
        $("#notes").empty('');
        $("#notes").append("Fail! <br/>" , " Event: ", event.which, " ctrlKey: ", event.ctrlKey, " Altkey: ", event.altKey);
        return false;
      }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span id="notes">Klick to focus snippet and test keydown event, works well in Explorer/Edge but not in chrome</span>
<div/>

1 Ответ

0 голосов
/ 18 июня 2018

Я нашел ответ на свой вопрос.Мне действительно не нравится решение, потому что оно немного грязное, и я не знаю, является ли оно пуленепробиваемым.Любая идея по этому вопросу будет принята с благодарностью, и если здесь будет использован внешний подход, он будет немного более чистым.

var altgr = false;   
    
    $(document).on("keyup", function (event) {
        if((event.key === "AltGraph"|| event.key ==="Alt")||(event.ctrlKey && event.altKey)){
          altgr=false;
        }
    });

$(document).on("keydown", function(event)
{   
    var altkey = event.key;     
     if((event.key === "AltGraph")||(event.ctrlKey && event.altKey)){
      altgr = true;
     }
     console.log(altgr);
        
    // AltGr+Q
    if(event.which === 81 && altgr)
    {          
        $("#notes").empty('');
        $("#notes").append("Success!<br/>" , " Event: ", event.which, " ctrlKey: ", event.ctrlKey, " Altkey: ", event.altKey);
        return false;
     }
         if(event.which === 87 && altgr)
    {          
        $("#notes").empty('');
        $("#notes").append("Success!<br/>" , " Event: ", event.which, " ctrlKey: ", event.ctrlKey, " Altkey: ", event.altKey);
        return false;
     }
     else
     {
        $("#notes").empty('');
        $("#notes").append("Fail! <br/>" , " Event: ", event.which, " ctrlKey: ", event.ctrlKey, " Altkey: ", event.altKey);
        return false;
      }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span id="notes">Click to focus snippet and test keydown event, works well in Explorer/Edge but not in chrome</span>
<div/>
...