使用 Delphi 编写 ActiveX 插件的方法有很多,但 ActiveX 本身在 IE 以外的浏览器中存在很多限制。所以我在想 - 如何编译一个 NPAPI 格式的插件,原生兼容 Chrome/Firefox?
该插件的目的是允许将 VCL 表单嵌入到 HTML 页面中,并能够使用 JavaScript 与该表单进行双向通信。例如。单击表单上的按钮将调用页面上的 JavaScript 函数,页面上的 JavaScript 函数可以将事件发送到 VCL 表单。如何实现这一目标?
Mozilla bugtracker 上有 Delphi 的现有 NPAPI 包装器列表:https://www.mozdev.org/bugs/show_bug.cgi?id=8708 https://www.mozdev.org/bugs/show_bug.cgi?id=8708
最新的条目(带有脚本支持的 NPAPI 插件框架 + Yury Sidorov 的演示)准确地提供了所需的内容。
有了这个VCL Form项目就可以编译成与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;
附:应该应用于现代 Delphi 版本的唯一修复 - 更改string
and PChar
to AnsiString
and PAnsiChar
在整个NPPlugin.pas
。否则与嵌入表单的通信就会被破坏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)