オブジェクトにJavascriptを登録するイベント
-
03-07-2019 - |
質問
htmlページにロードしたactivexオブジェクトがあります。次に、その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());
}
実際に作成されるように、javascriptのuploadActionオブジェクトのプロパティの一部を列挙しました。 uploadActionでイベントを登録しようとすると、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーがスローされます。
私には、強く型付けされたイベントを期待しているようです。とにかく、JavaScriptでC#のイベントに似たイベントを登録する方法はありますか?
事前に感謝します。
解決 3
これらのプロパティはjavascriptを介してアクセスできないことが会社から判明しました。 JavaScript内で使用するには、外部化する必要があります。
他のヒント
javascriptは次のようになります。
function uploadAction::stateChanged( parms )
{
// ...
// implementation
// ...
}
「uploadAction」という名前のActive Xオブジェクトがあると仮定すると、これは静的関数宣言であることに注意してください。私はこれが機能することを知っています-私たちは私の会社でそれを使用しています。
このエラーメッセージは、uploadActionがstateChangedプロパティをサポートしていないことを意味します。 JavaScriptコードは正しいように見えますが、問題はイベントハンドラをアタッチしようとしているオブジェクトにあるようです。
こちらで概説されている高度なイベント登録モデルを使用することをお勧めします。
uploadAction.addEventListener( 'stateChanged'、upload_stateChanged、false);
注、最初の引数はイベント状態である必要があるため、 upload_stateChanged
メソッドの引数を調べる必要がある場合があります。例: upload_stateChanged(evt、sender)
...