2010-03-04 5 views
1

일부 기능을 확장하는 ActiveX 개체가 있습니다. ActiveX 객체를로드하고 자바에서 메서드를 호출하는 웹 페이지가 있습니다. ActiveX 개체에는 두 가지 방법이 있습니다. 문제는 Javascript가 성공적으로 호출 할 수 있지만 다른 호출하지 못한다는 것입니다. 인용 한 개체는이 속성이나 메서드을 지원하지 않습니다.이 메서드는 성공적으로이 다른 메서드를 호출하는 VB6.0 응용 프로그램을 만들었으므로 말도 안되기 때문에 실제로 두 함수가 제대로 확장되어 작업을 수행하기 때문입니다.Javascript는 ActiveX 메서드 호출을 거부하고 다른 호출을 동의 함

그렇습니다. Internet Explorer 보안 영역은 모두 설정되어 있고 JavaScript 코드 위에 쓴 것처럼 한 가지 방법을 호출 할 수 있지만 다른 것을 호출하는 것을 거부합니다.

Javascript가 헤드셋이되는 이유는 무엇입니까?

+0

최소한 이러한 방법의 서명을 보여줄 수 있습니다. –

+0

나는 당신이 서명 무슨 뜻인지 이해 잘 모르겠지만, 여기에 기능을위한 IDL 파일 선언은 다음과 같습니다 [propget] [ID (3), helpstring ("방법 addh3h3")]에서 HRESULT의 addh3h3 ([ ] VARIANT x, [in] VARIANT y, [out, retval] VARIANT * z); \t [propget] [id (5), helpstring ("속성 ATR")] HRESULT ATR ([출력, retval] BSTR * pVal); 첫 번째 것은 자바 스크립트에서 호출 할 수 있으며 두 번째 것은 실패합니다. 오류 코드를 호출하는 자바 스크립트 코드는 다음과 같습니다. function GetATR() { var y = ""; y = actvx3obj.ATR(); 알림 (y); } – Orca

+0

IE 비 관리자 컨트롤을 사용해 보셨습니까? 그렇다면 원인 일 수 있습니다. – Eugene

답변

0

대답은 매우 간단했습니다. IDL 파일에서 함수는 입력 인수를 취하지 않고 속성 (propget)으로 선언되었습니다. 자바 스크립트 코드에서는 actvx3obj.ATR()을 호출했습니다. 사실 actvx3obj.ATR을 호출해야했습니다. 인수를 취하지 않는 속성 get 메서드이기 때문입니다.

비슷한 문제가있는 사람이 해결책을 찾지 못하도록하기 위해 게시하고 있습니다.

관련 문제