2011-01-21 8 views
2

현재 사용자가 ActiveX 컨트롤을 설치하지 않은 경우 설치 버튼이있는 일반적인 노란색 막대가 표시됩니다. 그러나 설치가 끝나면 페이지를 자동으로 새로 고침해야합니다. 플러그인 존재 여부를 지속적으로 폴링하지 않는 플러그인이 성공적으로 설치되었음을 감지하는 방법이 있습니까?ActiveX의 완료 이벤트 캡처하기

function checkForPlugin() { 
    try { 
      control = new ActiveXObject('Object.One'); 
      //refresh 
    } catch (e) { 
      setTimeout("checkForPlugin()" ,2000); 
    } 
} 

이 몹시 전문하지 않는 것 내가 복용 할 수있는 더 나은 방법이 있는지 궁금 해요 : 그것은이 일을하지,라고하는 것입니다. 생각 해보니 ... 어쨌든 내가 어떻게 새로 고칠 지 확신 할 수 없네. 누구도 그것에 대해 통찰력을 가지고 있니? 감사.

업데이트 - 위의 방법을 사용하여 작업하고 새로 고침 문제를 해결했습니다. 비록 실제로 구현으로 이것으로 흥분하지 않습니다. 브라우저가 앉아있는 상태에서 백그라운드에서 계속 폴링하면 원하는 결과를 얻을 때까지는 잘못된 생각입니다. 그것은 이 아니다. 나는 추측한다. 그러나 나는 더 깨끗한 접근이 있었으면한다. 누구든지 아이디어가 있습니까?

답변

0

주어진 두 답변은 완벽하게 유효하지만 어느 솔루션도 내 시간 제한이나 구현 내에서 실제로 작동하지 않습니다. 답변 해 주셔서 감사합니다. 궁극적으로 제 질문에 설명 된대로 진행했습니다.

0

컨트롤을 이벤트에 발생시키고 수신 대기시킬 수 있습니다.

0

ActiveX 설치 마무리 이벤트 캡처는 오해의 일종이라고 생각합니다.

기본적으로 웹 페이지는 단일 스레드로 실행됩니다. 백그라운드 설치와 같은 비동기 처리는 없습니다.

웹 페이지의 수명이 다가 오면 ActiveX 컨트롤이 이미 설치되어 있거나 아무것도 설치되어 있지 않습니다. control = new ActiveXObject이 throw되면 페이지 수명 시간 동안 ActiveX 컨트롤을 인스턴스화 할 수 없습니다.

즉, ActiveX 컨트롤이 아직 설치되지 않은 경우 새로 설치된 ActiveX 컨트롤을 사용하려면 페이지를 새로 고쳐야합니다. 이 새로 고침은 IE에서 자동으로 수행됩니다.

관련 문제