복붙노트

[JQUERY] 최고의 크로스 브라우저의 방법은 JQuery와 함께 CTRL + S를 캡처?

JQUERY

최고의 크로스 브라우저의 방법은 JQuery와 함께 CTRL + S를 캡처?

해결법


  1. 1.

    $(window).keypress(function(event) {
        if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
        alert("Ctrl-S pressed");
        event.preventDefault();
        return false;
    });
    

    그냥 115 이상 확인해야 할 수 있도록 키 코드는 브라우저마다 다를 수 있습니다.


  2. 2.이것은 Ctrl 키 + S에서 Ctrl + F 및 Ctrl + G를 오버로드 나 (사용 JQuery와) 작동 :

    이것은 Ctrl 키 + S에서 Ctrl + F 및 Ctrl + G를 오버로드 나 (사용 JQuery와) 작동 :

    $(window).bind('keydown', function(event) {
        if (event.ctrlKey || event.metaKey) {
            switch (String.fromCharCode(event.which).toLowerCase()) {
            case 's':
                event.preventDefault();
                alert('ctrl-s');
                break;
            case 'f':
                event.preventDefault();
                alert('ctrl-f');
                break;
            case 'g':
                event.preventDefault();
                alert('ctrl-g');
                break;
            }
        }
    });
    

  3. 3.당신은 브라우저의 특정 물건을 처리하기 위해 바로 가기 라이브러리를 사용할 수 있습니다.

    당신은 브라우저의 특정 물건을 처리하기 위해 바로 가기 라이브러리를 사용할 수 있습니다.

    shortcut.add("Ctrl+S",function() {
        alert("Hi there!");
    });
    

  4. 4.이 jQuery를 솔루션은 Ctrl 키 + S 및 Cmd를 + S 모두에 대해, 크롬과 파이어 폭스에서 나를 위해 작동합니다.

    이 jQuery를 솔루션은 Ctrl 키 + S 및 Cmd를 + S 모두에 대해, 크롬과 파이어 폭스에서 나를 위해 작동합니다.

    $(document).keydown(function(e) {
    
        var key = undefined;
        var possible = [ e.key, e.keyIdentifier, e.keyCode, e.which ];
    
        while (key === undefined && possible.length > 0)
        {
            key = possible.pop();
        }
    
        if (key && (key == '115' || key == '83' ) && (e.ctrlKey || e.metaKey) && !(e.altKey))
        {
            e.preventDefault();
            alert("Ctrl-s pressed");
            return false;
        }
        return true;
    }); 
    

  5. 5.이 사람은 크롬에 나를 위해 일한 ... 확실하지, 나를 위해 자본 S (83)를 반환 event.which 어떤 이유로 왜 (에 관계없이 캡의 상태가 잠금) 내가있는 fromCharCode과와 toLowerCase을 사용 그래서 그냥 안전을 위해

    이 사람은 크롬에 나를 위해 일한 ... 확실하지, 나를 위해 자본 S (83)를 반환 event.which 어떤 이유로 왜 (에 관계없이 캡의 상태가 잠금) 내가있는 fromCharCode과와 toLowerCase을 사용 그래서 그냥 안전을 위해

    $(document).keydown(function(event) {
    
        //19 for Mac Command+S
        if (!( String.fromCharCode(event.which).toLowerCase() == 's' && event.ctrlKey) && !(event.which == 19)) return true;
    
        alert("Ctrl-s pressed");
    
        event.preventDefault();
        return false;
    });
    

    나는 83이 아닌 115을받을 사람이 왜 알고있는 경우에, 나는 사람이 나는 그것이 작동 아닌지 듣고 드리겠습니다 다른 브라우저에서이 테스트 또한 경우, 듣고 행복 할 것이다


  6. 6.나는 파이어 폭스, IE와 크롬을 지원하기 위해 몇 가지 옵션을 결합했다. 나는 또한 더 나은 지원 맥에 업데이트되었습니다

    나는 파이어 폭스, IE와 크롬을 지원하기 위해 몇 가지 옵션을 결합했다. 나는 또한 더 나은 지원 맥에 업데이트되었습니다

    // simply disables save event for chrome
    $(window).keypress(function (event) {
        if (!(event.which == 115 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) && !(event.which == 19)) return true;
        event.preventDefault();
        return false;
    });
    
    // used to process the cmd+s and ctrl+s events
    $(document).keydown(function (event) {
         if (event.which == 83 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) {
            event.preventDefault();
            save(event);
            return false;
         }
    });
    

  7. 7.솔직히, 내 기본 바로 가기 키를 재정의 할 수있는 웹 애플리케이션을하고 싶습니다. Ctrl 키 + S는 이미 브라우저에서 무언가를. 내가 볼 수있어 위치에 따라 갑자기 그 변화를 갖는 것은 종종 버그 말할 것도없고, 혼란과 실망. 그것은 Ctrl 키 + I와 같은 모습 때문에 두 사이트에서 내 작품을 망치고 평소대로 탭을 전환에서 저를 방지 사이트 납치 Ctrl + Tab을 했어.

    솔직히, 내 기본 바로 가기 키를 재정의 할 수있는 웹 애플리케이션을하고 싶습니다. Ctrl 키 + S는 이미 브라우저에서 무언가를. 내가 볼 수있어 위치에 따라 갑자기 그 변화를 갖는 것은 종종 버그 말할 것도없고, 혼란과 실망. 그것은 Ctrl 키 + I와 같은 모습 때문에 두 사이트에서 내 작품을 망치고 평소대로 탭을 전환에서 저를 방지 사이트 납치 Ctrl + Tab을 했어.

    당신이 바로 가기 키를 원하는 경우, accesskey 속성을 사용합니다. 기존 브라우저 기능을 중단하지 마십시오.


  8. 8.$ (문서) .keydown (기능 (전자) { 경우 ((e.key == 'S'|| e.key == 'S') && (e.ctrlKey || e.metaKey)) { e.preventDefault (); 경고 ( "Ctrl 키의 누를"); false를 반환; } true를 반환; }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> Ctrl 키 + S 곳을 눌러보십시오.

    $ (문서) .keydown (기능 (전자) { 경우 ((e.key == 'S'|| e.key == 'S') && (e.ctrlKey || e.metaKey)) { e.preventDefault (); 경고 ( "Ctrl 키의 누를"); false를 반환; } true를 반환; }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> Ctrl 키 + S 곳을 눌러보십시오.

    이 AlanBellows의 대답 @의 최신 버전, 키를 대체합니다. 또한 (Ctrl + S를 누르지 경우 자본 대신 S의 S 전송) 크롬의 수도 키 결함으로도 사용할 수 있습니다. 모든 현대적인 브라우저에서 작동합니다.


  9. 9.@Eevee : 브라우저가 풍부하고 풍부한 기능과 데스크탑 애플리케이션을 대체하기 시작의 홈 해짐에 따라, 그냥 키보드 단축키의 사용을 포기하는 옵션이 될 것 아니에요. 키보드 명령의 Gmail의 풍부하고 직관적 인 세트는 Outlook을 포기하는 내 의지에 쓸모 있었다. 투두 이스트, 구글 리더, 구글 캘린더의 키보드 단축키는 모두 매일 내 인생이 훨씬 쉽게합니다.

    @Eevee : 브라우저가 풍부하고 풍부한 기능과 데스크탑 애플리케이션을 대체하기 시작의 홈 해짐에 따라, 그냥 키보드 단축키의 사용을 포기하는 옵션이 될 것 아니에요. 키보드 명령의 Gmail의 풍부하고 직관적 인 세트는 Outlook을 포기하는 내 의지에 쓸모 있었다. 투두 이스트, 구글 리더, 구글 캘린더의 키보드 단축키는 모두 매일 내 인생이 훨씬 쉽게합니다.

    개발자는 확실히 이미 브라우저에서 의미가 키 입력을 무시하지 않도록주의해야한다. 예를 들어, 대량 살상 무기는 내가 "인용구"보다는 "앞으로 삭제 단어"로 설명 할 수 없 Ctrl 키를 해석 + 델에 입력을 해요 텍스트 상자. 사이트 개발자가 사용할 수있는 그 브라우저가 향후 버전에서 멀리 체재에 커밋 것 "브라우저 안전"바로 가기의 표준 목록 곳이 있는지 궁금 해요.


  10. 10.이것은 쉽게 다른 키 조합을 포함 할 수 있습니다 여기에 다른 제안보다 훨씬 더 쉽게 읽을 수 내 솔루션, 그리고 IE, 크롬, 파이어 폭스에서 테스트되었습니다 :

    이것은 쉽게 다른 키 조합을 포함 할 수 있습니다 여기에 다른 제안보다 훨씬 더 쉽게 읽을 수 내 솔루션, 그리고 IE, 크롬, 파이어 폭스에서 테스트되었습니다 :

    $(window).keydown(function(evt) {
        var key = String.fromCharCode(evt.keyCode);
        //ctrl+s
        if (key.toLowerCase() === "s" && evt.ctrlKey) {
            fnToRun();
            evt.preventDefault(true);
            return false;
        }
        return true;
    });
    

  11. 11.나는이 작은 플러그인을 좋아합니다. 그래도 조금 더 크로스 브라우저 편의를 필요로한다.

    나는이 작은 플러그인을 좋아합니다. 그래도 조금 더 크로스 브라우저 편의를 필요로한다.


  12. 12.이것은 (https://stackoverflow.com/a/8285722/388902에서 적응) 작동합니다.

    이것은 (https://stackoverflow.com/a/8285722/388902에서 적응) 작동합니다.

    var ctrl_down = false;
    var ctrl_key = 17;
    var s_key = 83;
    
    $(document).keydown(function(e) {
        if (e.keyCode == ctrl_key) ctrl_down = true;
    }).keyup(function(e) {
        if (e.keyCode == ctrl_key) ctrl_down = false;
    });
    
    $(document).keydown(function(e) {
        if (ctrl_down && (e.keyCode == s_key)) {
            alert('Ctrl-s pressed');
            // Your code
            return false;
        }
    }); 
    

  13. 13.예:

    예:

    shortcut.add("Ctrl+c",function() {
        alert('Ok...');
    }
    ,{
        'type':'keydown',
        'propagate':false,
        'target':document
    });
    

    용법

    <script type="text/javascript" src="js/shortcut.js"></script>
    

    다운로드 링크 : http://www.openjs.com/scripts/events/keyboard_shortcuts/#


  14. 14.! 앨런 벨로우즈에 대답하기 : AltGr 키를 사용하는 사용자 추가 (e.altKey) 할 때 입력 (예를 들어, 폴란드). 이 눌러 AltGr 키 + S Ctrl 키 + S와 같은 결과를 줄 것없이

    ! 앨런 벨로우즈에 대답하기 : AltGr 키를 사용하는 사용자 추가 (e.altKey) 할 때 입력 (예를 들어, 폴란드). 이 눌러 AltGr 키 + S Ctrl 키 + S와 같은 결과를 줄 것없이

    $(document).keydown(function(e) {
    if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey) && !(e.altKey))
    {
        e.preventDefault();
        alert("Ctrl-s pressed");
        return false;
    }
    return true; });
    

  15. 15.내게로이 플러그인 제작은 도움이 될 수 있습니다.

    내게로이 플러그인 제작은 도움이 될 수 있습니다.

    플러그인

    당신은 다음과 같이 실행되도록 키 코드 및 기능을 제공 할 플러그인이있다 사용할 수 있습니다

    simulatorControl([17,83], function(){
     console.log('You have pressed Ctrl+Z');
    });
    

    코드에서 내가 Ctrl 키 + S를 위해 수행하는 방법을 표시했다. 당신은 링크에 대한 자세한 문서를 얻을 것이다. 플러그인 Codepen 내 펜의 자바 스크립트 코드 섹션에 있습니다.


  16. 16.나는 기본 동작을 방지하기 위해 ( "메시지와 함께") 경고를 사용하여, IE에 내 문제를 해결 :

    나는 기본 동작을 방지하기 위해 ( "메시지와 함께") 경고를 사용하여, IE에 내 문제를 해결 :

    window.addEventListener("keydown", function (e) {
        if(e.ctrlKey || e.metaKey){
            e.preventDefault(); //Good browsers
            if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { //hack for ie
                alert("Please, use the print button located on the top bar");
                return;
            }
        }
    });
    
  17. from https://stackoverflow.com/questions/93695/best-cross-browser-method-to-capture-ctrls-with-jquery by cc-by-sa and MIT license