2008-10-16 3 views
0

나는 HTML 페이지에로드 된 activex 객체가 있습니다. 그런 다음 해당 activex 객체를 사용하여 다른 객체를 만들지 만, 만든 새 객체로 이벤트를 등록해야합니다. 객체가 특정 유형의 이벤트 리스너를 예상합니다.자바 스크립트 이벤트를 객체에 등록하는 중

이 동일한 DLL을 C#에서로드 할 수 있으며 정상적으로 작동합니다. 코드는 C#의 경우와 유사합니다.

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

자바 스크립트에서는 비슷한 코드가 있지만 개체에 등록 된 이벤트를 가져올 수 없습니다.

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

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

나는 그것을 실제로 만들어 졌는지 확인하기 위해 자바 스크립트의 uploadAction 개체의 속성 중 일부를 열거했다. uploadAction을 사용하여 이벤트를 등록하려고 시도하면 "개체가이 속성이나 메서드를 지원하지 않습니다."라는 오류가 발생합니다.

내게는 강력한 입력 이벤트가 예상됩니다. 어쨌든 자바 스크립트에서 C#과 비슷한 이벤트를 등록 할 수 있습니까?

감사의 말 전진. 당신이 'uploadAction'라는 액티브 X 개체가 가정이 정적 함수 선언이다,

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

참고 :

답변

0

자바 스크립트를 통해 이러한 속성에 액세스 할 수 없음을 회사에서 알 수 있습니다. 그들은 자바 스크립트 내에서 사용하기 위해 외부화해야합니다.

0

자바 스크립트는 다음과 같이 보일 것입니다. 이것이 작동한다는 것을 알고 있습니다. 우리 회사에서 사용하고 있습니다.

+0

내 JS에서 완전히 같은 기능을 작성하려고하면 완전히 충돌합니다. – JustLogic

+0

uploadAction은 activex 객체가 아닙니다. activex 객체를 사용하면 axObj에 uploadAction 객체를 생성하는 axObj.constructUpload 함수가 있습니다. 생성 된 후에 뭔가가 있는지 확인하기 위해 uploadAction에 함수를 호출했습니다. – JustLogic

0

오류 메시지는 uploadAction이 stateChanged 속성을 지원하지 않는다는 것을 의미합니다. 귀하의 자바 스크립트 코드가 올바른지, 문제는 당신이 이벤트 처리기를 첨부하려고하는 개체와 함께있는 것 같습니다.

+0

VS 2005에서 dll을로드하고 C#에서 생성 된 업로드 객체를 참조하면 stateChanged 속성이 처리기 함수를 할당 할 수있는 이벤트로 표시됩니다. 위의 코드에서 알 수 있듯이. – JustLogic

0

here에 설명 된 고급 이벤트 등록 모델을 사용하는 것이 좋습니다.

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

노트, 당신은 첫 번째 인수가 이벤트 상태이어야한다 같이 upload_stateChanged 방법에 대한 귀하의 인수를 심문해야 할 수도 있습니다. 예 : upload_stateChanged(evt, sender) ...