Javascript, регистрирующий событие для объекта - PullRequest
0 голосов
/ 16 октября 2008

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

Я могу загрузить эту же DLL в C #, и она будет работать нормально. Код выглядит так для c #.

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, выдается сообщение об ошибке «Объект не поддерживает это свойство или метод».

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

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

Ответы [ 4 ]

0 голосов
/ 27 мая 2009

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

0 голосов
/ 16 октября 2008

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

0 голосов
/ 22 января 2009

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

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

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

0 голосов
/ 16 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...