Вопрос

У меня есть объект activex, который я загрузил на html-страницу.Затем я использую этот объект activex для создания другого объекта, но мне нужно зарегистрировать событие для созданного нового объекта.Объект ожидает прослушиватель событий определенного типа.

Я могу загрузить эту же dll в С#, и она будет работать нормально.Код для С# выглядит следующим образом.

upload = obj.constructUploadObj(uploadConfig);
upload.stateChanged += new UploadActionEvents_stateChangedEventHandler(upload_stateChanged);

В javascript у меня есть аналогичный код, однако я не могу зарегистрировать событие с объектом.

uploadAction = obj.constructUploadObj(uploadConfig);
uploadAction.stateChanged = upload_stateChanged;

function upload_stateChanged(sender){
    writeLine("uploadState changed " + sender.getState());
}

Я перечислил некоторые свойства объекта uploadAction в javascript, чтобы убедиться, что он действительно создан.Когда я пытаюсь зарегистрировать событие с помощью uploadAction, он выдает ошибку: «Объект не поддерживает это свойство или метод».

Мне кажется, что он ожидает строго типизированного события.Есть ли способ зарегистрировать событие, подобное событию С#, в javascript?

Заранее спасибо.

Это было полезно?

Решение 3

От компании узнали, что эти свойства недоступны через JavaScript.Им потребуется внедрить их для использования в JavaScript.

Другие советы

Ваш javascript должен выглядеть примерно так:

function uploadAction::stateChanged( parms )
{
    // ...
    // implementation
    // ...
}

Обратите внимание: это объявление статической функции, при условии, что у вас есть объект Active X с именем «uploadAction».Я знаю, что это работает — мы используем это в моей компании.

Сообщение об ошибке означает, что uploadAction не поддерживает свойство stateChanged.Ваш код JavaScript выглядит правильно, проблема, похоже, связана с объектом, к которому вы пытаетесь прикрепить обработчик событий.

Я бы предложил использовать описанную расширенную модель регистрации событий. здесь.

uploadAction.addEventListener('stateChanged', upload_stateChanged, false);

Обратите внимание: вам, возможно, придется подвергнуть сомнению ваши аргументы в пользу upload_stateChanged метод, поскольку первым аргументом должно быть состояние события.бывший: upload_stateChanged(evt, sender) ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top