0

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#のイベントに似たイベントを登録する方法はありますか?

前もって感謝します。

4

4 に答える 4

0

JavaScriptは次のようになります。

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

'uploadAction'という名前のアクティブXオブジェクトがあると仮定すると、これは静的関数宣言であることに注意してください。私はこれが機能することを知っています-私たちは私の会社でそれを使用しています。

于 2008-10-16T16:43:21.077 に答える
0

エラーメッセージは、uploadActionがstateChangedプロパティをサポートしていないことを意味します。JavaScriptコードは正しいように見えますが、問題はイベントハンドラーをアタッチしようとしているオブジェクトにあるようです。

于 2008-10-16T16:44:19.497 に答える
0

これらのプロパティにはjavascriptからアクセスできないことが会社からわかりました。JavaScript内で使用するには、それらを外部化する必要があります。

于 2009-05-27T13:23:16.937 に答える
0

ここで概説されている高度なイベント登録モデルを使用することをお勧めします。

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

upload_stateChanged最初の引数はイベント状態でなければならないため、メソッドの引数を調べる必要がある場合があることに注意してください。例: upload_stateChanged(evt, sender)...

于 2009-01-21T22:24:45.177 に答える