我正在努力为Mac上的chrome制作一个NPAPI插件。我编写了一个基本的npapi插件和一个基本的manifest.json和background.html来加载它。我的background.html有一个embed标记来通过Mimetype获取插件。
现在,当我从Chrome加载我的未打包扩展并尝试调试c++代码(在xcode4中)时,我发现这些函数被按以下顺序调用:
NP_InitializeNP_GetEntryPointsNPP_NewNPP_Destroy在此之后,当我单击扩展图标时,应该执行popup.html。我的popup.html有以下几行:
第1行:
var pluginObj = document.getElementById("pluginId");第2行:
pluginObj.Myfunction();但是在第1行中,NP_Getvalue()函数没有被调用,因此没有实例化“NPObject脚本”。在第2行,Chrome JavaScript控制台上写着:
Error in event handler for 'undefined': Object #<HTMLEmbedElement> has no method 'Myfunction' TypeError: Object #<HTMLEmbedElement> has no method 'Myfunction'为什么NPP_Destroy函数在NPP_New function之后立即被调用?
发布于 2012-10-11 09:15:25
您是否在插件中完成了绘图和事件模型协商?从Mac的Chrome 22开始,长期不受欢迎的QuickDraw和碳模式不再受支持,如果你的插件不和现代模式谈判,它就会在init之后被销毁。请参阅这里,例如执行此操作的代码。
(是的,不幸的是,32位插件的默认模型是旧的、不受欢迎的模型,但是由于所有现有的插件都有旧的行为,因此无法在规范中改变这一点。)
https://stackoverflow.com/questions/12833641
复制相似问题