Pregunta

Tengo un objeto activex que cargué en una página html. Luego uso ese objeto activex para crear otro objeto, pero necesito registrar un evento con el nuevo objeto creado. El objeto espera un detector de eventos de cierto tipo.

Puedo cargar este mismo dll en c # y funcionará bien. El código se ve así para c #.

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

En javascript tengo un código similar, sin embargo, no puedo registrar el evento con el objeto.

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

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

He enumerado algunas de las propiedades del objeto uploadAction en javascript para asegurarme de que realmente se haya creado. Cuando intento registrar el evento con uploadAction, aparece un error que dice "Objeto no es compatible con esta propiedad o método".

Para mí parece que está esperando un evento fuertemente tipado. ¿Hay alguna forma de registrar el evento similar al de C # en JavaScript?

Gracias de antemano.

¿Fue útil?

Solución 3

La compañía descubrió que estas propiedades no son accesibles a través de JavaScript. Tendrán que externalizarlos para usarlos en JavaScript.

Otros consejos

Su javascript debería verse así:

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

Tenga en cuenta que esta es una declaración de función estática, suponiendo que tenga un objeto Active X llamado 'uploadAction'. Sé que esto funciona, lo usamos en mi empresa.

El mensaje de error significa que uploadAction no admite la propiedad stateChanged. Su código javascript se ve correcto, el problema parece estar en el objeto al que está intentando adjuntar un controlador de eventos.

Sugeriría usar el modelo avanzado de registro de eventos descrito aquí .

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

nota, es posible que deba interrogar sus argumentos para el método upload_stateChanged , ya que el primer argumento debería ser el estado del evento. Ej: upload_stateChanged (evt, remitente) ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top