JavaScript 등록 이벤트에 대한 이벤트
-
03-07-2019 - |
문제
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)
...