문제

C#로 작성된 BHO/Toolbar를 작업하여 브라우저의 현재 웹 페이지에서 제기 된 HTML 이벤트를 듣습니다. 이 솔루션에는 HTMLPageEventManager라는 재사용 가능한 클래스가 포함되어 있습니다. 목표는 페이지로드가 완료되기 전에 사용자가 페이지 요소와 상호 작용하기 시작하자마자 핸들러를 첨부하는 것입니다. 이 클래스 사용은 간단합니다. 생성자에게 전화하십시오.

var evts = new List() {
    HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown,
    HtmlEvent.onselectstart, HtmlEvent.onselectionchange,
    HtmlEvent.onfocus, HtmlEvent.onselect
};
new HtmlPageEventManager( this, evts, this.HtmlEventHandler );

제발 여기에서 내 솔루션을 다운로드하십시오 그것을 시도하고 나에게 피드백을 보내려면. 유용하다고 생각되면 자신의 프로젝트에서 자유롭게 사용하십시오. 잘 작동하지만 이벤트를 첨부하지 못하는 경우가 있습니다. 나는 그러한 상황을 정확히 찾아내는 데 어려움을 겪었습니다. 따라서 HTMLPageEventManager를 개선하는 데 도움이 될 수 있습니다.

내 솔루션 참조 Spicie의 어셈블리이지만 위의 다운로드에는 포함되어 있지 않으므로 가져와야합니다. Spicie 웹 사이트 . BTW, 이것은 아마도 물어볼 좋은시기 일 것입니다 : Spicie는 얼마나 인기가 있습니까? 사용하기에 더 좋은 도구가 있습니까?

도움이 되었습니까?

해결책

응! BHO의 DownloadComplete 이벤트를 구독하여 "새로 고침"문제를 극복했으며, 여기서 HTML 이벤트 처리기를 첨부하는 "RegistereVenthandlers"도우미 메소드를 다시 호출합니다. 연결된 코드 Jeffamaphone이 도움이되었습니다. RegisterEventhandlers를 조건부로 호출하기 위해 "NormalPageload"멤버 변수에 대한 아이디어를 통합했습니다. 나도 보았다 동반 포럼 게시물. 그래도 부모 창의로드 된 이벤트에 대한 강조를 이해할 수 없습니다. 나는 그 역할조차하지 않고 내 코드를 작동시켰다. 어쨌든, 나는 htmlpageeventmanager가 지금 완전히 기능하고 있다고 생각합니다. 아직도 일을하지 않는 경우를 찾으면 소리를 줘주세요.

다른 팁

페이지로드 중에 IE에 대해 100% 솔루션이 없다는 것을 알게 될 것입니다. 그것은 당신의 잘못이 아닙니다 : IE의 이벤트 모델은 비동기 코드의 거대한 스파게티 덩어리로, 제대로하기가 매우 어렵습니다. 95%인 솔루션이 있다면 행복하고 계속 진행한다고 말합니다.

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