我已经使用Delphi开发了.ocx
。
Rad Studio为我自动生成了一个.ridl
文件。
我创建了一个加载.ocx activeX
的html页面,它可以正常工作。
现在,我需要从HTML页面内的Javascript中调用.ocx
文件中的函数,我知道它是可能的,但我不知道该怎么做。我认为我必须以某种方式配置.ridl
文件,但是我找不到有关它的任何文档。
现在,我在创建的表单中声明了一个公共函数,如下所示:
procedure WriteText(const text: string); safecall;
从Java语言开始,我这样称呼它:
document.forms[0].MyProjectName.WriteText('foo');
但是我得到了错误
variable type invalid
(我有点怀疑它是EOleSysError类型错误)。所以我可以看到WriteText函数,但是我不能使用它。我还尝试用
string
和WideString
替换函数中的PWideChar
类型,并始终出现相同的错误。我该如何解决?
最佳答案
我通过给<OBJECT>
元素赋予ID并通过javascript调用方法来完成此操作,如下所示:
<script language="javascript">
someID.WriteText('Hello!');
</script>
在页面的某处:
<OBJECT ID="someID"
CLASSID="clsid:12345678-90AB-CDEF-1234-56789ABCDEF1"
CODEBASE="/my.ocx"
WIDTH="100"
HEIGHT="25">
关于delphi - 从.ocx ActiveX向Java脚本公开功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37813182/