Обработка событий, запускаемых свойством элемента управления ActiveX в HTML / Javascript - PullRequest
5 голосов
/ 15 июля 2009

Следующий объект HTML представляет элемент управления ActiveX со свойством SubSystemA:

<object id="MainObject"
    CLASSID="CLSID:2C327457-D12F-4FC4-BFC2-D7C029003D07"
    width="0px" height="0px"
    >
    <embed name="MainObject"></embed>
</object>

SubSystemA - это COM-объект, реализующий некоторый интерфейс с методами, свойствами и событиями. Методы и свойства SubSystemA легко вызываются из Javascript, но поскольку SubSystemA является свойством MainObject, я не уверен, как подключить обработчик событий к событиям SubSystemA.

Мне известны два способа обработки событий, запускаемых MainObject:

<script type="text/javascript">
    function MainObject::SomeMainEvent(arg1, arg2)
    {
         // Event handling logic
    }
</script>

и

<script type="text/javascript" for="MainObject" event="SomeMainEvent(arg1, arg2)">
    // Event handling logic
</script>

Но как обработать событие для MainObject.SubSystemA?

Ответы [ 2 ]

1 голос
/ 27 декабря 2009

Самый простой способ, который я нашел для выполнения событий в подобъекте, который позволяет реализацию событий, совместимых с javascript, - это реализовать attachEvent и detachEvent самостоятельно; просто сохраните IDispatch * переданной функции, а затем выполните итерации по ним и вызовите Invoke с DISPID = 0 для каждого.

Для самого MainObject вам, вероятно, придется использовать точки подключения, которые работают немного по-другому.

FireBreath абстрагирует все это как для IE, так и для Firefox, включая создание отдельных COM-объектов. Может стоит посмотреть

1 голос
/ 16 июля 2009

Я обнаружил, что работает следующее:

<object id="MainObject"
    CLASSID="CLSID:2C327457-D12F-4FC4-BFC2-D7C029003D07"
    width="0px" height="0px"
    >
    <embed name="MainObject"></embed>
</object>

<script type="text/javascript">
    function MainObject.SubSystemA::SomeSubSystemEvent(arg1)
    {
         // Event handling logic
    }
</script>

, и в настоящее время я ищу способ адаптировать синтаксис , поскольку, по-видимому, он допускает более позднее связывание, когда рабочий синтаксис этого не делает.

...