Frage

Ich habe ein ActiveX-Objekt I in eine HTML-Seite geladen. Ich benutze dann das ActiveX-Objekt ein anderes Objekt zu erstellen, aber ich brauche ein Ereignis mit dem neuen Objekt erstellt registrieren. Das Objekt wird ein Ereignis-Listener eines bestimmten Typs erwartet.

Ich kann diese gleiche DLL in c # laden und es wird funktionieren. Code sieht wie folgt für c #.

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

In Javascript ich ähnlichen Code haben aber ich kann nicht das Ereignis bekommen mit dem Objekt registriert.

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

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

Ich habe einige der Eigenschaften des uploadAction Objekt in Javascript aufgezählt, um sicherzustellen, dass es tatsächlich erstellt wird. Wenn ich versuche, und das Ereignis registrieren uploadAction es einen Fehler wirft sagen „Objekt diese Eigenschaft oder diese Methode nicht unterstützt.“

Für mich scheint es, wie es ist ein stark typisierte Ereignis erwartet. Gibt es trotzdem, das Ereignis ähnlich der von C # in Javascript registrieren?

Vielen Dank im Voraus.

War es hilfreich?

Lösung 3

Gefunden von der Firma aus, dass diese Eigenschaften durch Javascript nicht zugänglich sind. Sie müssen sie in Javascript für den Einsatz externalisieren.

Andere Tipps

Ihr Javascript wie folgt aussehen sollte:

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

Beachten Sie, dass dies eine statische Funktion Erklärung, unter der Annahme, dass Sie ein Active-X-Objekt mit dem Namen haben ‚uploadAction‘. Ich weiß, dass diese Arbeit tut - wir haben es in meiner Firma verwenden

.

Die Fehlermeldung bedeutet, dass uploadAction nicht statechanged Eigenschaft nicht unterstützt. Ihr JavaScript-Code sieht richtig, das Problem scheint mit dem Objekt zu sein, Sie versuchen, einen Ereignishandler zu befestigen.

Ich würde vorschlagen, die erweiterte Ereignisregistrierungsmodell skizziert hier .

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

Notiz, müssen Sie Ihre Argumente für die upload_stateChanged Methode abzufragen, als das erste Argument der Ereigniszustand sein sollte. ex: upload_stateChanged(evt, sender) ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top