복붙노트

[JQUERY] JavaScript를 사용하여 Android 가상 키보드에서 입력 한 캡처 키

JQUERY

JavaScript를 사용하여 Android 가상 키보드에서 입력 한 캡처 키

해결법


  1. 1.불행히도 여기에서 많이 할 수없는 것 같습니다. 키 누르기 이벤트는 더 이상 사용되지 않으므로 해고되지 않습니다. Keyup 및 Keydown에서 키보드 버퍼가 사용 중이니다. 그 이유 - 키를 누르면 입력이 아직 사용자가 누르고있는 것으로 보장되지 않습니다. 자동 제안 및 즉시 다음 이벤트를 따르고 이벤트를 무효화 할 수 있습니다. 내 의견으로는 키를 먼저 보내는 것이 더 낫습니다. 그런 다음 다른 이벤트가 아마도 자동으로 제안 할 수 있으므로 별도로 행동 할 수 있습니다 ...

    불행히도 여기에서 많이 할 수없는 것 같습니다. 키 누르기 이벤트는 더 이상 사용되지 않으므로 해고되지 않습니다. Keyup 및 Keydown에서 키보드 버퍼가 사용 중이니다. 그 이유 - 키를 누르면 입력이 아직 사용자가 누르고있는 것으로 보장되지 않습니다. 자동 제안 및 즉시 다음 이벤트를 따르고 이벤트를 무효화 할 수 있습니다. 내 의견으로는 키를 먼저 보내는 것이 더 낫습니다. 그런 다음 다른 이벤트가 아마도 자동으로 제안 할 수 있으므로 별도로 행동 할 수 있습니다 ...

    현재 알고있는 유일한 것은 keydown 및 keyup을 모두 첨부하고 keydown에 값을 저장하고 KeyUp에서 값을 가져 와서 델타를 찾아 델타를 찾아 닫습니다. 불행히도 이것은 비 입력 컨트롤 (예를 들어, 본문 또는 그런 것)에서는 작동하지 않습니다. 어쩌면 당신이 답변으로 듣고 싶지는 않을 것입니다.


  2. 2.나는 같은 문제로 도망 쳤다. 몇 가지 설명이 있지만 어쨌든 해결책이 제공되지 않는 이상한 것 같습니다. 그 순간에 onInput 이벤트를 캡처하여 해결했습니다.

    나는 같은 문제로 도망 쳤다. 몇 가지 설명이 있지만 어쨌든 해결책이 제공되지 않는 이상한 것 같습니다. 그 순간에 onInput 이벤트를 캡처하여 해결했습니다.

    "이 이벤트는 OnChange 이벤트와 유사합니다. 차이는 요소가 변경된 직후에 OnInput 이벤트가 발생하는 것입니다. onchange는 요소가 변경된 후에 요소가 포커스를 잃을 때 발생합니다"

    이 이벤트는 텍스트 붙여 넣기 또는 수정 및 제안에서도 텍스트를 삽입하는 텍스트를 지원합니다.

    그것은 나에게 완벽한 솔루션을주지 않습니다. 왜냐하면 나는 그것이 입력 된 후에 텍스트를 조작 할 수 있지만 그 순간은 내가 가진 최고입니다.

    누구든지 더 나은 솔루션을 가지고 있다면 나는 그것에 대해 듣게되어 기쁠 것입니다.


  3. 3.나는 일하고있는 프로젝트에 대한 연구를하는 동안이 토론을 가로 웠습니다. 모바일 앱을위한 입력 마스크를 만들어야했으며 파벨 돈치에프의 대답은 Android에서 키를 캡처 할 수있는 작업에 대해 생각하게되었습니다. 내 특정 프로젝트에서 KeyDown 및 Keyup은 키 업 이벤트가 키가 릴리스 된 후에 만 ​​트리거되기 때문에 키 다운 및 Keyup이 충분하지 않으므로 늦은 유효성 검사에서는, 입력 이벤트가있는 더 많은 연구 (및 많은 시련 및 오류)를 수행했습니다. 그리고 그것을 일하고 있습니다.

    나는 일하고있는 프로젝트에 대한 연구를하는 동안이 토론을 가로 웠습니다. 모바일 앱을위한 입력 마스크를 만들어야했으며 파벨 돈치에프의 대답은 Android에서 키를 캡처 할 수있는 작업에 대해 생각하게되었습니다. 내 특정 프로젝트에서 KeyDown 및 Keyup은 키 업 이벤트가 키가 릴리스 된 후에 만 ​​트리거되기 때문에 키 다운 및 Keyup이 충분하지 않으므로 늦은 유효성 검사에서는, 입력 이벤트가있는 더 많은 연구 (및 많은 시련 및 오류)를 수행했습니다. 그리고 그것을 일하고 있습니다.

    var input = document.getElementById ( '신용 카드 마스크'), oldvalue, NewValue, 차이 = 기능 (value1, value2) { var 출력 = []; for (i = 0; i

    키 다운 값

    입력 값

    형식 값

    OnInput 이벤트는 KeyDown 이벤트 직후에 트리거되며 내 유효성 검사를 완벽하게 타이밍합니다.

    나는 기사에서 모든 것을 편집했다. 궁금한 경우 여기에서 읽을 수 있습니다.


  4. 4.입력 문자 키 코드가 0 또는 229 인 경우 JS의 charcodeat를 사용하여 입력 문자열을 가져오고 마지막 문자의 키 코드를 반환하는 키 코드를 반환하는 getKeyCode () 함수입니다.

    입력 문자 키 코드가 0 또는 229 인 경우 JS의 charcodeat를 사용하여 입력 문자열을 가져오고 마지막 문자의 키 코드를 반환하는 키 코드를 반환하는 getKeyCode () 함수입니다.

    <script>
            var getKeyCode = function (str) {
                return str.charCodeAt(str.length);
            }
    
    
            $('#myTextfield').on('keyup',function(e){
    
                //for android chrome keycode fix
                if (navigator.userAgent.match(/Android/i)) {
    
                    var inputValue = this.value;
    
                    var charKeyCode = e.keyCode || e.which;
                    if (charKeyCode == 0 || charKeyCode == 229) { 
                        charKeyCode = getKeyCode(inputValue);
                        alert(charKeyCode+' key Pressed');
                    }else{
                       alert(charKeyCode+' key Pressed');
                        }
                }       
            });
        </script>
    

  5. 5.입력 된 문자를 제공하는 TextInput 이벤트가 있습니다.

    입력 된 문자를 제공하는 TextInput 이벤트가 있습니다.

    const inputField = document.getElementById('wanted-input-field');
    
    inputField.addEventListener('textInput', function(e) {
        // e.data will be the 1:1 input you done
        const char = e.data; // In our example = "a"
    
        // If you want the keyCode..
        const keyCode = char.charCodeAt(0); // a = 97
    
        // Stop processing if "a" is pressed
        if (keyCode === 97) {
            e.preventDefault();
            return false;
        }
        return true;
    });
    

  6. 6.최근에는 Astro AI 보조 이메일 앱의 최신 버전에서 "Mentions"기능을 구현했습니다. 기본적으로 웹 뷰 작성에 "@"를 입력하고 자동 완성 제안 목록을 얻을 수 있습니다. 우리는 다른 대부분의 사람들과 마찬가지로 자바 스크립트에서 이것을 해결하려는 데 문제가있었습니다. 결국 작동 한 것은 원산지였습니다. WebView의 OnCreateInputConnection () 메소드를 @ 오버 라이드 인 경우 사용자 정의 클래스가있는 Super.oncreateInputConnection () 결과 (INPUTCONNECTION 인터페이스 일뿐)를 래핑 할 수 있습니다. 그런 다음 래퍼 구현에서는 Committext () 또는 setComposingText ()를 통해 입력을 트랩하거나 삭제처럼 찾고있는 것과 같은 다른 메소드로 특정한 방법을 수행 할 수 있습니다. 위아래로 화살표와 같은 제어 문자에 대한 콜백을 얻을 수 있지만 특정 문제를 해결하기 위해 시작할 수있는 장소가 될 수 있습니다.

    최근에는 Astro AI 보조 이메일 앱의 최신 버전에서 "Mentions"기능을 구현했습니다. 기본적으로 웹 뷰 작성에 "@"를 입력하고 자동 완성 제안 목록을 얻을 수 있습니다. 우리는 다른 대부분의 사람들과 마찬가지로 자바 스크립트에서 이것을 해결하려는 데 문제가있었습니다. 결국 작동 한 것은 원산지였습니다. WebView의 OnCreateInputConnection () 메소드를 @ 오버 라이드 인 경우 사용자 정의 클래스가있는 Super.oncreateInputConnection () 결과 (INPUTCONNECTION 인터페이스 일뿐)를 래핑 할 수 있습니다. 그런 다음 래퍼 구현에서는 Committext () 또는 setComposingText ()를 통해 입력을 트랩하거나 삭제처럼 찾고있는 것과 같은 다른 메소드로 특정한 방법을 수행 할 수 있습니다. 위아래로 화살표와 같은 제어 문자에 대한 콜백을 얻을 수 있지만 특정 문제를 해결하기 위해 시작할 수있는 장소가 될 수 있습니다.


  7. 7.나는 그것을 알아!

    나는 그것을 알아!

    다음은 IOS 및 붙여 넣은 콘텐츠에 대한 이모티콘 제안조차도 모든 기능을 갖춘 모든 기능을 갖춘 100 % 작업 솔루션입니다. Substring 비교를 사용하여 OnInput에서 OnInput로 변경된 실제 물건을 찾습니다.

    텍스트가 삭제되고 삽입 된 것까지의 포인트가 지적되었습니다.

    답변으로 등급을 높이고 선택하는 것이 이해됩니다.

    var x = document.getElementByID ( "영역"), 텍스트 = x.value, event_count = 0. 함수 find_entered_and_removed_substrings ( previous_string, current_string, pos. ) { 허락하다 right_pos = pos, right_boundary_of_removed = previous_string.length - ( current_string.length - 포즈 ), left_max_pos = math.min ( POS, right_boundary_of_removed. ), left_pos = left_max_pos. ( x = 0으로하자; x { // 디버거; 허락하다 cur_text = x.value, 위치 = find_entered_and_removed_substrings ( 텍스트, cur_text, math.max ( X.SelectionStart, X.Selectionend. ) ) console.log (위치) 허락하다 입력 됨 = cur_text.substring ( positions.left, positions.right. ), 제거 = text.substring ( positions.removed_left, positions.removed_right. ) 만약 ( enter.length >. 0 || 삭제 된> ... 한 것 ) { document.getElementById ( "입력") .innerhtml + = 입력 document.getElementById ( "제거") .innerhtml + =. 제거 된 Document.GetElementByID ( "이벤트") .innerhtml = event_count ++. } 텍스트 = cur_text. }