2013-02-16 71 views

回答

2

對於Windows NPP_HandleEvent()僅用於無窗口插件,默認情況下它們是窗口。所以,除非你明確選擇了無窗口,否則NPP_HandleEvent()沒有被調用。

對於窗口化插件,您需要繼承插件窗口以接收窗口消息(例如,請參閱Mozilla測試插件源中的Subclass())。

對於無窗口插件(應該是首選),WM_ACTIVATEnot delivered to the plugin
您是否確實需要處理WM_ACTIVATE或者您是否需要知道插件何時可見/專注?這可以通過檢查NPP_SetWindow()的0尺寸剪輯矩形和焦點事件來確定。
如果你真的需要了解窗口激活(爲什麼?),我可以想到的下一個最好的事情是在窗口上監聽focus DOM事件。

+0

如果我切換到另一個標籤,插件** clipRect **將爲0 NPP_SetWindow()**大小,但如果我切換到另一個窗口,它不是0 -sized.My瀏覽器是Safari瀏覽器Mac OS X. – Magical 2013-02-18 01:41:59

+0

正如我所說,它表示*可見性*,而不是窗口焦點。通常知道插件元素是否可見並且重點應該足夠。 – 2013-02-18 14:41:27

+0

(另外,某些瀏覽器可能不會發送所有他們應該看到的可見性通知)。 – 2013-02-20 12:14:34