onclick onblur와 같은 JavaScript 이벤트를 추적하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/91367

  •  01-07-2019
  •  | 
  •  

문제

Internet Explorer 7에서 모든 자바스크립트 이벤트를 디버그하거나 추적할 수 있는 방법이 있나요?

텍스트를 선택한 후 스크롤을 방해하는 버그가 있는데 어떤 이벤트나 동작이 버그를 생성하는지 전혀 알 수 없습니다.예를 들어 마우스를 움직일 때 어떤 이벤트가 트리거되는지 보고 싶습니다.

소스를 다시 배선하는 것은 너무 많은 작업이므로 트리거되는 모든 이벤트를 나에게 보여주는 스니퍼와 같은 것이 있었으면 좋겠습니다.

도움이 되었습니까?

해결책

Borkdude는 이렇게 말했습니다.

Visual Studio 2008과 그 기능을 사용하여 JavaScript 코드를 디버깅해 볼 수도 있습니다.

저는 여러 번 이벤트 처리를 해킹해 왔으며 제 생각에는 기존 스테핑 디버거가 긴 코드 실행을 추적하는 데 유용하지만 이벤트 추적에는 좋지 않습니다.마우스 이동 이벤트를 수신하고 각 이벤트에서 다른 애플리케이션에 침입한다고 상상해 보십시오...따라서 이 경우에는 로깅을 강력히 권장합니다.

문제가 Internet Explorer 7에만 국한되지 않고 Firefox에서도 발생하는 경우 JavaScript 코드를 디버그하는 또 다른 좋은 방법은 Firefox와 개똥 벌레 JavaScript 디버거가 있는 추가 기능입니다.

그리고 또 있어요 방화범 라이트 인터넷 익스플로러용.나는 그것을 사용할 기회가 없었지만 존재합니다.:-) 단점은 완전한 기능을 갖춘 디버거는 아니지만 정확히 필요한 window.console 개체를 가지고 있다는 것입니다.

다른 팁

onXYZ 함수가 정의된 페이지의 모든 요소를 ​​반복한 다음 해당 요소에 추적을 추가합니다.

var allElements = document.all; // Is this right? Anyway, you get the idea.

for (var i in allElements) {
    if (typeof allElements[i].onblur == "function") {
        var oldFunc = allElements[i].onblur;
        allElements[i].onblur = function() {
             alert("onblur called");
             oldFunc();
        };
    }
}

Visual Studio 2008과 그 기능을 사용하여 JavaScript 코드를 디버깅해 볼 수도 있습니다.

문제가 Internet Explorer 7에만 국한되지 않고 Firefox에서도 발생하는 경우 JavaScript 코드를 디버그하는 또 다른 좋은 방법은 Firefox와 개똥 벌레 JavaScript 디버거가 있는 추가 기능입니다.그럼 당신은 또한 넣을 수 있습니다 console.log JavaScript 코드의 명령문은 다음에서 출력을 볼 수 있습니다. 콘솔 창 Firebug에서는 때때로 이벤트 체인을 엉망으로 만드는 경고를 사용하는 대신.

@[nickf] - 확실해요 document.all Internet Explorer 전용 확장 프로그램입니다.

이벤트 핸들러를 연결해야 합니다. 이벤트를 '감시'할 수 있는 방법은 없습니다.Microsoft Ajax 라이브러리의 jQuery와 같은 프레임워크는 이벤트 핸들러를 추가하는 방법을 쉽게 제공합니다.jQuery는 선택기 프레임워크 때문에 훌륭합니다.

그런 다음 Firebug(Firefox 확장)를 사용하고 중단점을 설정합니다.저는 Firebug가 Visual Studio 2008보다 설치 및 해체가 훨씬 쉽다고 생각합니다.

기본적이지만 무언가를 트리거할 때 경고나 document.write 호출을 추가할 수 있습니다.

확실한 방법은 다음과 같은 다양한 이벤트에 대한 경고를 설정하는 것입니다.

element.onclick = function () { alert('Click event'); }

그렇지 않으면 경고를 DOM 어딘가에 삽입하는 덜 방해적인 옵션이 있습니다.

그러나 다음과 같은 라이브러리 사용을 진지하게 고려하십시오. jQuery 기능을 구현합니다.브라우저 간 문제 중 상당수는 해결된 문제이므로 다시 해결할 필요가 없습니다.달성하려는 기능이 정확히 무엇인지는 잘 모르겠지만 사용할 수 있는 jQuery용 플러그인을 스크롤하고 선택하는 방법이 많이 있을 것입니다.

정확한 코드는 잘 모르겠지만(복잡한 JavaScript 코드를 작성한 지 꽤 됐습니다), 양식의 모든 컨트롤을 열거하고 이벤트가 트리거될 때 무언가를 출력하는 이벤트를 첨부할 수 있습니다.

익명 함수를 사용하여 어떤 이벤트가 트리거되었는지 식별하는 데 필요한 정보를 래핑할 수도 있습니다.

제가 좋아하는 것 중 하나는 JavaScript로 바인드 함수를 만드는 것입니다(예: 원기 라이브러리) 특히 이벤트용이므로 "이벤트" 개체를 바인딩된 함수에 전달합니다.이제 이 작업을 수행하려면 이를 사용하는 모든 핸들러에 대해 호출될 추적 호출을 간단히 던질 수 있습니다.그리고 필요하지 않을 때는 제거하세요.한 곳.쉬운.

그러나 추적 문을 호출하는 방법에 관계없이 여전히 이를 보고 싶어합니다.가장 좋은 전략은 추적 호출을 처리하는 별도의 창이나 창을 갖는 것입니다. Dojo 툴킷 Internet Explorer에서 실행되는 콘솔이 내장되어 있으며 다른 유사한 기능도 있습니다.이를 수행하는 고전적인 방법은 새 창을 만들고 document.write 그것에.

  • 각 추적에 날짜-시간을 첨부하는 것이 좋습니다.과거에 나에게 많은 도움을 주었다.
  • 디버깅 및 경고는 일반적인 이벤트 흐름을 방해하므로 일반적으로 도움이 되지 않습니다.

Matt Berseth는 당신이 찾고 있는 것과 같은 종류의 것을 가지고 있습니다. 추적 콘솔 AjaxControlToolkit 컨트롤을 사용하여 ASP.NET AJAX 애플리케이션 디버깅.

야후를 기반으로 하고 있습니다. 유이 나무꾼, 유이 2:나무꾼.

내 제안은 FireBug와 함께 FireFox를 사용하고 내장된 Debug/Trace 개체를 사용하는 것입니다.그것은 매력입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top