2016-06-14 5 views
2

Я разработал .ocx, используя Delphi. Rad Studio автоматически сгенерировал файл .ridl для меня.Функция Expose для Javascript из .ocx ActiveX

Я создал html-страницу, которая загружает .ocx activeX, и она работает без проблем.

Теперь мне нужно вызвать функцию внутри файла .ocx из Javascript внутри страницы Html, я знаю, что это возможно, но я не могу понять, как это сделать. Я думаю, что мне нужно как-то настроить файл .ridl, но я не могу найти документацию об этом.

Прямо сейчас, я объявил публичную функцию внутри формы я создал, как это:

procedure WriteText(const text: string); safecall; 

и с Javascript, я называю это так:

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

, но я получил ошибка variable type invalid (я несколько подозреваю, что это ошибка EOleSysError). Поэтому я могу видеть функцию WriteText, но я не могу ее использовать.

Я также попытался заменить string тип в моей функции WideString и PWideChar, с той же ошибкой.

Как я могу это решить?

+0

Имейте в виду, что Много лет назад Microsoft потеряла поддержку ActiveX на веб-страницах. Работали только в IE, и они даже не переносили его на Edge. –

+3

Путешественник во времени с конца 20-го века! Добро пожаловать! –

+0

ahahah хорошо, я понимаю его устаревшую технику, но .. мне нужно иметь дело с этим! – HypeZ

ответ

1

Я сделал это, давая идентификатор для <OBJECT> элемента и вызова метода с помощью 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">