Question

J'ai un objet ActiveX que j'ai chargé dans une page HTML. J'utilise ensuite cet objet activex pour créer un autre objet, mais je dois enregistrer un événement avec le nouvel objet créé. L'objet attend un écouteur d'événement d'un certain type.

Je peux charger cette même DLL en c # et cela fonctionnera bien. Le code ressemble à ceci pour c #.

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

En javascript, j'ai un code similaire mais je ne parviens pas à enregistrer l'événement avec l'objet.

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

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

J'ai énuméré certaines des propriétés de l'objet uploadAction en javascript afin de m'assurer qu'il est réellement créé. Lorsque j'essaie d'enregistrer l'événement auprès de uploadAction, une erreur s'affiche: "L'objet ne prend pas en charge cette propriété ou cette méthode".

Pour moi, il semble s’attendre à un événement fortement typé. Est-il possible d'enregistrer l'événement similaire à celui de C # en javascript?

Merci d'avance.

Était-ce utile?

La solution 3

La société a appris que ces propriétés ne sont pas accessibles via javascript. Ils devront les externaliser pour pouvoir être utilisés avec JavaScript.

Autres conseils

Votre javascript devrait ressembler à ceci:

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

Notez qu'il s'agit d'une déclaration de fonction statique, en supposant que vous ayez un objet Active X nommé "uploadAction". Je sais que cela fonctionne - nous l'utilisons dans mon entreprise.

Le message d'erreur signifie que uploadAction ne prend pas en charge la propriété stateChanged. Votre code javascript semble correct, le problème semble être lié à l’objet auquel vous essayez de joindre un gestionnaire d’événements.

Je suggérerais d'utiliser le modèle d'enregistrement d'événement avancé décrit ici .

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

Remarque, vous devrez peut-être interroger vos arguments pour la méthode upload_stateChanged , car le premier argument doit être l'état de l'événement. ex: upload_stateChanged (evt, expéditeur) ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top