Trigger debug on hotkey for any site

Messing with hard-to-catch events again?

2024-03-28 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name Trigger debug on hotkey for any site
// @namespace K33p_Qu13t's Weird Scripts
// @match *://*/*
// @grant none
// @version 1.0
// @author K33p_Qu13t
// @license MIT
// @description Messing with hard-to-catch events again?
//  Here we go - trigger debug at any site by holding hotkey combination, then inspect anything you want!
//  Debug would be triggered after miliseconds you spend by holding the hotkey combination
// ==/UserScript==

/** Char to trigger Debug with ctrl+char pressed*/
const hotkeyChar = 'q';

let millisecondsHolded = 0;
let holdStartTime;
let timeoutId;

const onKeyDown = (e) => {
  if (!e.repeat && e.ctrlKey && e.key === hotkeyChar) {
        clearTimeout(timeoutId);
        // Set when started to hold hotkey
        holdStartTime = Date.now();

        document.addEventListener('keyup', onKeyUp);
    }
}

const onKeyUp = () => {
  millisecondsHolded = Date.now() - holdStartTime;
  timeoutId = setTimeout(() => {
      // Stop any code flow
      debugger;
  }, millisecondsHolded);

  document.removeEventListener('keyup', onKeyUp);
}

document.addEventListener('keydown', onKeyDown);