>

이 웹 사이트에서 이것에 대한 많은 결과를 찾았지만 모두 Jquery를 사용하는 것 같습니다. Jquery없이 어떻게 해야하는지 정말로 알아야합니다. 내가 원하는 것은 버튼을 클릭하고 ALT + N 또는 CTRL + G와 같은 키 입력을 트리거하는 것입니다. 감사합니다.

  • 답변 # 1

    와이즈 비즈 살펴보기  건설자. 다음과 같이 사용할 수 있습니다 :

    KeyboardEvent
    
    
    document.addEventListener('DOMContentLoaded', function () {
      document.getElementById('alt-n').addEventListener('click', function () {
        // create a new keyboard event
        var event = new KeyboardEvent('keydown', {
          key: 'n',
          altKey: true
        });
        // dispatch the alt+n key press event
        document.dispatchEvent(event);
      });
      document.getElementById('ctrl-g').addEventListener('click', function () {
        // create a new keyboard event
        var event = new KeyboardEvent('keydown', {
          key: 'g',
          ctrlKey: true
        });
        // dispatch the ctrl+g key press event
        document.dispatchEvent(event);
      });
      // listen for any key presses
      document.addEventListener('keydown', function (e) {
        if (e.altKey || e.ctrlKey) {
          // alt or ctrl is pressed
          console.log('Key: ' + e.key + '; alt pressed: ' + e.altKey + '; ctrl pressed: ' + e.ctrlKey);
        }
      });
    });
    
    

    수정

    브라우저가 HTML을 구문 분석하고 <button id="alt-n">alt+n</button> <button id="ctrl-g">ctrl+g</button> 에 도달하면  태그가 있으면 즉시 JavaScript를 실행합니다. 그러나 문서의 나머지 부분이 아직로드되지 않았을 수 있습니다.

    이것은 페이지의 일부 HTML 요소가 아직 존재하지 않으며 JavaScript에서 해당 요소에 액세스 할 수 없음을 의미합니다 ( <script>   document.getElementById 를 반환합니다  요소를 찾을 수없고 null 에서 특성을 읽을 수없는 경우 ).

    요소가로드 될 때까지 기다려야합니다. 물론 함수를 만들어 null 에서 호출 할 수 있습니다.  인라인 핸들러 :

    onclick
    
    
    function dispatchAltN () {
      var event = new KeyboardEvent('keydown', {
        key: 'n',
        altKey: true
      });
      document.dispatchEvent(event);
    }
    document.addEventListener('keydown', function (e) {
      if (e.altKey || e.ctrlKey) {
        // alt or ctrl is pressed
        console.log('Key: ' + e.key + '; alt pressed: ' + e.altKey + '; ctrl pressed: ' + e.ctrlKey);
      }
    });
    
    

    그러나 인라인 JavaScript를 사용해서는 안됩니다.

    다행히 브라우저는 페이지의 내용을 모두로드하면 이벤트를 발생시킵니다. 이 이벤트를 <button onclick="dispatchAltN();">alt+n</button> 라고합니다 .

    브라우저가 이벤트를 처음 시작할 때까지 기다리면 DOM의 모든 요소에 액세스 할 수 있습니다.

  • 답변 # 2

    HTML

    DOMContentLoaded
    
    

    자바 스크립트

    <button onClick="myFunction()">Click me</button>
    
    

  • 답변 # 3

    function myFunction(){ var k = new Event("keydown"); k.key="a"; //Change this value for different keys document.dispatchEvent(k); } 를 실행할 수 있습니다  그것은 event 에 의해  그것은 code 입니다

    event.code
    
    

    <!doctype html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="style.css"> <script> var ev = new Event('keydown'); ev.code = 110; // change this code to specific event code to trigger it function Load() { var button = document.getElementById('btn'); // Listen for the event. button.addEventListener('keydown', function(e) { if (e.code === 110) { alert('Successfully triggered ALT + N'); } // write your logic here }, false); } function dispatchKeypress(e) { e.preventDefault(); // Dispatch the event. e.target.dispatchEvent(ev); } </script> </head> <body onload="Load()"> <button onclick="dispatchKeypress(event)" id="btn">Button</button> </body> </html>

관련 자료

  • 이전 xcode를 사용하고 "속성에 할당 할 수 없습니다 - 'image'는 오류입니다
  • 다음 javascript - 이 유형의 JS 코드를 단락시키는 방법