2016-06-14 92 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">