2013-02-16 6 views

답변

2

Windows의 경우 NPP_HandleEvent()은 창없는 플러그인에만 사용되며 기본적으로 창으로 표시됩니다. 그래서, 당신이 명시 적으로 윈도우리스를 선택하지 않는다면, 그것은 NPP_HandleEvent()이 호출되지 않는 이유가 될 것입니다.

창 플러그인의 경우 창 메시지를 수신하도록 플러그인 창을 하위 클래스에 추가해야합니다 (예 : Mozillas 테스트 플러그인 소스의 Subclass() 참조).

창없는 플러그인 (선호해야 함)의 경우 WM_ACTIVATEnot delivered to the plugin입니다.
실제로는 WM_ACTIVATE을 처리해야합니까, 아니면 플러그인이 표시/포커스 된 시점을 알아야합니까? 이는 NPP_SetWindow()에 대한 0 크기의 클립 rect와 포커스 이벤트를 확인하여 확인할 수 있습니다.
윈도우 정품 인증 (이유는 무엇입니까?)에 대해 정말로 알고 싶다면, 내가 생각할 수있는 차선책은 윈도우에서 focus DOM 이벤트를 청취하는 것입니다.

+0

다른 태그로 전환하면 플러그인 ** clipRect **는 ** NPP_SetWindow() **에 대해 0 크기가되지만 다른 창으로 전환하면 0 크기가 아닙니다. 내 브라우저가 사파리입니다. Mac OS X. – Magical

+0

내가 말했듯이, 윈도우 포커스가 아닌 * 가시성 * 신호입니다. 일반적으로 플러그인 요소가 눈에 띄고 집중해야한다는 사실을 알고 있으면 충분합니다. –

+0

(일부 브라우저는 모든 가시성 알림을 전송하지 않을 수도 있음). –