【发布时间】:2011-08-17 13:33:40
【问题描述】:
几天以来,我一直在尝试解决以下问题,阅读了我在网上找到的所有关于 Mac 上的 npapi 的信息。
我们的目标是拥有一个适用于 safari 和 firefox(mac) 的 npapi 插件。 我的软件(我不能为此专门重写大约 45000 行 C 代码)基于附加到 NSDocument 的 NSView....
我有一个基于 webkit 版本的插件,我必须丢弃(感谢 Apple!)基于相同的 NSView。
我有一个在 firefox 上运行良好的 npapi 版本插件。在这个 npapi 插件中,我使用了 carbon window ref,基于它制作了一个 NSWindow: NSWindow *browserWindow = [[[NSWindow alloc] initWithWindowRef:wind]autorelease];
然后我把我的 NSView 放在这个窗口上就可以了。
现在问题是我不能在 safari 上做同样的事情。
看附图,窗口不在safari的窗口中!
我尝试了几种方法......它不起作用。 可可的咕噜能说我哪里做错了吗?还是这是一个已知问题?
NPError NPP_SetWindow(NPP 实例, NPWindow* 窗口){
NP_CGContext *ctx = 窗口->窗口; void *wind = ctx->window;
... 在 NSView 初始化函数中:
NSWindow *browserWindow = [[NSWindow alloc] initWithWindowRef:wind];
self = [super initWithFrame:frame];
if( self )
{
[browserWindow makeFirstResponder: self];
[self setNextResponder: nil];
[browserWindow setContentView:self];
[self webPlugInInitialize];// my own initializing
}
return self;
【问题讨论】:
-
我认为你不能在 firefox 上使用
NSView。