문제

HTML 페이지에로드 한 ActiveX 객체가 있습니다. 그런 다음 해당 ActiveX 객체를 사용하여 다른 객체를 만들지 만 생성 된 새 개체와 함께 이벤트를 등록해야합니다. 객체는 특정 유형의 이벤트 리스너를 기대하고 있습니다.

C#에 동일한 DLL을로드 할 수 있으며 잘 작동합니다. 코드는 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에서 업로드 됨 객체의 속성 중 일부를 열거하여 실제로 생성되었는지 확인했습니다. 이벤트를 업로드로 등록하려고 할 때 "객체는이 속성이나 방법을 지원하지 않습니다"라는 오류가 발생합니다.

나에게 그것은 강력하게 입력 한 이벤트를 기대하는 것처럼 보인다. 어쨌든 JavaScript에서 C#과 유사한 이벤트를 등록 할 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책 3

회사에서 이러한 속성은 JavaScript를 통해 액세스 할 수 없음을 발견했습니다. JavaScript 내에서 사용하기 위해 외부화해야합니다.

다른 팁

JavaScript는 다음과 같이 보일 것입니다.

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

'업로드'라는 활성 X 객체가 있다고 가정하면 정적 함수 선언입니다. 나는 이것이 효과가 있다는 것을 알고 있습니다 - 우리는 회사에서 그것을 사용합니다.

오류 메시지는 업로드가 StateChanged 속성을 지원하지 않음을 의미합니다. JavaScript 코드가 정확해 보이며 문제는 이벤트 핸들러를 첨부하려는 객체와 함께하는 것 같습니다.

고급 이벤트 등록 모델을 사용하는 것이 좋습니다 여기.

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

참고, 당신은 당신의 주장을 upload_stateChanged 방법, 첫 번째 인수는 이벤트 상태가되어야합니다. 전: upload_stateChanged(evt, sender) ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top