已知有使用Delphi编写ActiveX插件的方法,但ActiveX本身在IE以外的浏览器中存在很多限制。所以我在想 - 如何编译NPAPI格式的插件,本机与Chrome / Firefox兼容?
插件的含义是允许将VCL表单嵌入到HTML页面中,并且能够使用JavaScript与此表单进行双向通信。例如。单击表单上的按钮将调用页面上的JavaScript函数,页面上的JavaScript函数可以将事件发送到VCL表单。如何实现这一目标?
答案 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
中将PChar
和AnsiString
更改为PAnsiChar
和NPPlugin.pas
。否则就会破坏与嵌入式表单的通信。