我开发了一个可编写脚本的 NPAPI 插件。当我尝试在 Chrome/Firefox 中加载单个实例时,与网页(网页 A)及其 javascript 的通信没有问题。但是,一旦我使用嵌入的插件打开一个新页面(网页 B),它就想与网页 A 而不是网页 B 进行通信。我如何区分两者?
这可能是因为已经设置了入口点并且需要重置为正确的实例吗?
谢谢
我开发了一个可编写脚本的 NPAPI 插件。当我尝试在 Chrome/Firefox 中加载单个实例时,与网页(网页 A)及其 javascript 的通信没有问题。但是,一旦我使用嵌入的插件打开一个新页面(网页 B),它就想与网页 A 而不是网页 B 进行通信。我如何区分两者?
这可能是因为已经设置了入口点并且需要重置为正确的实例吗?
谢谢
入口点不会影响您正在谈论的内容;很可能您没有正确跟踪 NPP 实例,或者您有其他不应该是全局的东西。
基本入口点不是特定于实例的;如果您查看 NPP_* 函数,所有特定于实例的函数都将“NPP”作为第一个参数;通常,您会在 NPP 的 pdata 字段中保留指向某种数据结构的指针,这就是您应该用来区分不同实例的方法。如果您没有正确执行此操作,或者如果您在其他地方存储了应该是特定于实例的全局或静态变量,这些都可能导致您描述的问题。
您可能需要考虑使用FireBreath或Nixysa;第一个抽象出 NPAPI 的大部分痛苦并为您提供 IE 支持,第二个可以为您生成带有 API 的骨架,以便您填写其他代码并从已经工作的东西开始。
有关 NPP 结构如何工作以及如何区分不同实例的更多信息,请访问http://npapi.com/tutorial2