1
在Windows平臺上,當我切換到另一個窗口時,瀏覽器將收到WM_ACTIVATE消息。 有沒有辦法將WM_ACTIVATE消息傳遞給插件? 我試過了NPP_HandleEvent,但它似乎根本不起作用。npapi插件如何從瀏覽器中獲取WM_ACTIVATE消息?
在Windows平臺上,當我切換到另一個窗口時,瀏覽器將收到WM_ACTIVATE消息。 有沒有辦法將WM_ACTIVATE消息傳遞給插件? 我試過了NPP_HandleEvent,但它似乎根本不起作用。npapi插件如何從瀏覽器中獲取WM_ACTIVATE消息?
對於Windows NPP_HandleEvent()
僅用於無窗口插件,默認情況下它們是窗口。所以,除非你明確選擇了無窗口,否則NPP_HandleEvent()
沒有被調用。
對於窗口化插件,您需要繼承插件窗口以接收窗口消息(例如,請參閱Mozilla測試插件源中的Subclass()
)。
對於無窗口插件(應該是首選),WM_ACTIVATE
是not delivered to the plugin。
您是否確實需要處理WM_ACTIVATE
或者您是否需要知道插件何時可見/專注?這可以通過檢查NPP_SetWindow()
的0尺寸剪輯矩形和焦點事件來確定。
如果你真的需要了解窗口激活(爲什麼?),我可以想到的下一個最好的事情是在窗口上監聽focus
DOM事件。
如果我切換到另一個標籤,插件** clipRect **將爲0 NPP_SetWindow()**大小,但如果我切換到另一個窗口,它不是0 -sized.My瀏覽器是Safari瀏覽器Mac OS X. – Magical 2013-02-18 01:41:59
正如我所說,它表示*可見性*,而不是窗口焦點。通常知道插件元素是否可見並且重點應該足夠。 – 2013-02-18 14:41:27
(另外,某些瀏覽器可能不會發送所有他們應該看到的可見性通知)。 – 2013-02-20 12:14:34