我有一个NPAPI插件,用于将Web应用程序与打印机集成。我正在寻找一些有关如何将现有NPAPI插件移植到新的WebExtension标准的资源。
第一个问题是,什么是WebExtension限制所以我会评估它是否可能?
我当前的插件通过以下方式加载:
<embed id="myprinter" type="application/mozilla-printer-scriptable-plugin" width=200 height=200>
然后我们可以使用对象公开的方法与插件进行交互,例如
myprinter.print(),myprinter.clear(),myprinter.render(imageurl)
和属性
myprinter.status,myprinter.retcode
该插件与旧版斑马打印机交互以打印图像。
我对当前NPAPI如何在内部工作的了解也很有限,因为当前的扩展是由其他开发人员编写的。
答案 0 :(得分:2)
NPAPI模型是DLL
,可以加载并直接公开代码。
在WebExtension模型中不再可能。最接近的替代方法是Native Messaging - 浏览器不是加载DLL而是启动本机主机进程,并通过STDIO将格式化的消息转发给它。
所以从理论上讲,架构就是这样的:
您编写了一个本机主机&#34;包装器&#34;,它加载DLL并调用其方法,并准备使用Native Messaging协议与Chrome通信。
您编写了一个扩展程序,其背景页面与本机主机进行通信。
您编写了一个内容脚本,该脚本使用相同的公开方法将myprinter
对象注入页面的命名空间,并将请求中继到后台页面。
所以:
页面→已注入myprinter
→内容脚本→后台脚本→本机主机&#34;包装器&#34; →DLL→打印机