0

我在从插件代码更新 Firefox 上的状态消息时遇到了问题。

正如文档所说,调用NPN_Status仅在从主线程调用时才有效。我的要求是从 Firefox 进程中的任何线程更新状态。

任何帮助,将不胜感激!

4

2 回答 2

1

您不能从任何线程更新它,因为这会违反某些线程安全规则。您必须将更新代理回主线程。

于 2009-06-24T14:25:00.540 回答
0

就像 sdwilsh 所说,您NPN_*只能从主线程调用 -functions。NPN_PluginThreadAsyncCall仅在 Gecko 1.9 中引入,并非所有当前浏览器都支持。

解决方法取决于平台:

  • 在 Windows 上子类化您的插件接收的窗口,向其发布/发送消息并从处理窗口进程调用调用
  • 在带有 Cocoa 的 Mac 上,您可以使用例如performSelectorOnMainThread
  • 在带有 Carbon 的 Mac 上,您可以使用调用 null 事件的调用
  • ... ETC。
于 2009-12-22T09:03:04.723 回答