2016-06-14 91 views
2

我使用Delphi开发了.ocx。 Rad Studio auto为我生成了一个.ridl文件。从.ocx向Javascript公开功能ActiveX

我创建了一个加载.ocx activeX的html页面,它没有任何问题。

现在,我需要从Html页面内的Javascript中的.ocx文件中调用一个函数,我知道它的可能性,但我不知道如何。我想我必须以某种方式配置.ridl文件,但我找不到任何有关它的文档。

现在,我宣布我创建的表单内的公共功能,如:

procedure WriteText(const text: string); safecall; 

,并在Javascript中,我这样称呼它:

document.forms[0].MyProjectName.WriteText('foo'); 

,但我得到了错误variable type invalid(我有点怀疑它的一个EOleSysError类型错误)。所以我可以看到WriteText函数,但我无法使用它。

我也尝试用WideStringPWideChar替换string类型,并且总是出现相同的错误。

我该如何解决这个问题?

+0

请记住,许多年前,微软在网页上放弃了对ActiveX的支持。只在IE中工作,他们甚至没有把它带到Edge。 –

+3

来自20世纪末的时间旅行者!欢迎! –

+0

ahahah好吧,我了解它的一个不赞成的技术,但..我必须处理它! – HypeZ

回答

1

我已经通过JavaScript给一个ID为<OBJECT>元素,并调用该方法是这样做的:在页面

<script language="javascript"> 
    someID.WriteText('Hello!'); 
</script> 

而且地方:

<OBJECT ID="someID" 
     CLASSID="clsid:12345678-90AB-CDEF-1234-56789ABCDEF1" 
     CODEBASE="/my.ocx" 
     WIDTH="100" 
     HEIGHT="25">