Pergunta

Eu tenho um objeto ActiveX I carregado em uma página HTML. Eu, então, usar esse objeto activex para criar outro objeto, mas eu preciso registrar um evento com o novo objeto criado. O objeto está esperando um ouvinte de evento de um certo tipo.

Eu posso carregar essa mesma DLL em c # e ele vai funcionar bem. olhares código como este para c #.

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

em JavaScript Eu tenho um código semelhante, porém não posso começar o evento registrado com o objeto.

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

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

Eu enumerou algumas das propriedades do objeto uploadAction em javascript para garantir que ele é realmente criado. Quando eu tentar e registrar o evento com uploadAction ele lança um erro dizendo "objecto não suporta esta propriedade ou método."

Para mim parece que seu esperando um evento fortemente tipado. Existe uma maneira de registrar o evento semelhante à de C #, em javascript?

Agradecemos antecipadamente.

Foi útil?

Solução 3

Encontrado fora da empresa que essas propriedades não são acessíveis através de javascript. Eles terão de exteriorizar-los para uso dentro de javascript.

Outras dicas

O javascript deve ser algo como isto:

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

Note que esta é uma declaração de função estática, supondo que você tem um objeto Active X chamado 'uploadAction'. Eu sei que isso não funciona - nós usá-lo na minha empresa

.

Os meios de mensagens de erro que uploadAction não suporta stateChanged propriedade. Seus olhares de código javascript corrigir, o problema parece ser com o objeto que você está tentando anexar um manipulador de eventos para.

Eu sugiro usar o modelo de registro de eventos avançado delineado aqui .

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

nota, pode ser necessário para interrogar os seus argumentos para o método upload_stateChanged, como o primeiro argumento deve ser o estado do evento. ex: upload_stateChanged(evt, sender) ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top