首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac、NPAPI中的Cocoa事件模型、NSView和进程外插件

Mac、NPAPI中的Cocoa事件模型、NSView和进程外插件
EN

Stack Overflow用户
提问于 2010-11-18 13:27:45
回答 2查看 1.2K关注 0票数 1

嗯,目前chrome有进程外插件。而Firefox4将使用相同的模型。

这意味着插件进程现在从浏览器进程中分离出来了。插件进程可能根本没有窗口。

我的插件是基于NSView的。

在cocoa事件模型之前,当我可以在浏览器进程中访问NSWindow时,我所要做的就是将my_view作为contentView的子视图添加到窗口中。

代码语言:javascript
运行
复制
[[the_window contentView] addSubview:my_view] 

我不需要自己处理事件。它自己起作用了。

但是现在,我在事件处理代码中将NPCocoaEvents转换为NSEvents

我必须自己改吗?

还有一些NSEvents的实例,我不能让他们,例如,滚轮鼠标事件。

我该怎么做?

我是不是走错路了?

请给我开导一下。

EN

回答 2

Stack Overflow用户

发布于 2010-11-18 22:36:46

我必须自己更改它吗?

如果您计划使用将NSEvents转发到现有NSView的方法,那么可以;没有办法访问原始NSEvents。它们并不存在于插件进程中。

另一种选择是不再尝试使用本机控件,而是使用自己的绘图和事件处理。这是大多数NPAPI插件的工作方式。

第三种可能是为您的插件内容打开一个单独的窗口,并将您的视图放在该窗口中。这在技术上不受NPAPI的支持,它也不会是完美的,但它可能是一种短期的方法,可以让您的插件工作,同时探索长期的选择。

我是不是走错路了?

是的,您之前所做的是一个不受支持的黑客攻击,而不是如何使用NPAPI。将视图添加到浏览器窗口会假定浏览器的视图层次结构是实现细节,并且随时可能发生更改。

票数 2
EN

Stack Overflow用户

发布于 2010-12-02 15:30:10

一种选择是使用FireBreath框架来创建您的插件,因为它已经有很多用于协商事件和绘制模型的抽象以及事件抽象。这是相当简单的起身和前进。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4211950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档