如何使用NPAPI将Delphi VCL表单嵌入到HTML页面中?

时间:2014-04-07 07:06:42

标签: delphi npapi browser-plugin

已知有使用Delphi编写ActiveX插件的方法,但ActiveX本身在IE以外的浏览器中存在很多限制。所以我在想 - 如何编译NPAPI格式的插件,本机与Chrome / Firefox兼容?

插件的含义是允许将VCL表单嵌入到HTML页面中,并且能够使用JavaScript与此表单进行双向通信。例如。单击表单上的按钮将调用页面上的JavaScript函数,页面上的JavaScript函数可以将事件发送到VCL表单。如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

在Mozilla bugtracker上有Delphi的现有NPAPI包装器列表:https://www.mozdev.org/bugs/show_bug.cgi?id=8708

最新条目(带有脚本支持的NPAPI插件框架+ Yury Sidorov的演示)提供了所需的内容。

使用该VCL表单项目可以编译成与NPAPI兼容的DLL。还需要添加Manifest.json。之后插件可以像往常一样安装到Chrome中。

以下HTML代码嵌入了存储在插件中的VCL表单:

<EMBED id="embed1" TYPE="application/x-delphi-demo-plugin" ALIGN=CENTER WIDTH=400 HEIGHT=300>

<script>
var embed1 = document.getElementById('embed1');
</script>

<input type=button value="Show Value" onclick='alert("Value=" + embed1.value);'>

这就是Form可以如何更改它周围的HTML页面:

with Plugin.GetBrowserWindowObject do
  GetObject('document')['bgColor'] := clRed;

P.S。唯一应该应用于现代Delphi版本的修复 - 在string中将PCharAnsiString更改为PAnsiCharNPPlugin.pas。否则就会破坏与嵌入式表单的通信。