2013-03-12 4 views
0

FireBreath를 사용하여 크로스 브라우저 플러그인을 만듭니다. HTML 테스트 페이지에서 다음 기능을 사용하여 플러그인이 설치되어 있는지 여부를 감지하고 플러그인이 발견되지 않으면 MSI 설치 프로그램 다운로드를 시작합니다.ActiveXObject를 사용하여 FireBreath 플러그인의 인스턴스 만들기

function checkPlugin(){ 
    var pluginInstalled = false; 
    if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) { 
     // For IE 
     var pluginObject = null; 
     try { 
      pluginObject = new ActiveXObject('Test.TestPlugin'); 
      if(pluginObject){ 
       pluginInstalled = true; 
       //pluginObject.Dispose(); 
      } 
     } catch (e) { 
      // Cannot load the plugin. Most probably it's not installed 
      console.log(e.message); 
     } 
    }else{ 
     // For other browsers 
     pluginInstalled = (navigator.mimeTypes && navigator.mimeTypes["application/x-test"] && navigator.plugins["TestPlugin"]); 
    } 
    return pluginInstalled; 
} 

위의 기능은 IE를 제외한 다른 모든 브라우저에서 정상적으로 작동합니다. ActiveXObject를 사용하여 플러그인의 인스턴스를 만들려고하면 IE 9와 10 모두 충돌을 일으 킵니다. 필자는이 기능에 대한 지원이 FireBreath 1.4 이후부터 추가되었지만 FireBreath의 최신 버전 1.7을 사용하고 있다고 생각합니다. 이 문제를 해결하는 데 도움이됩니다. :)

답변

0

그 방법은 FireBreath javascript detection example에서 사용 된 것처럼 보이며, 그게 내 플러그인에서 사용하고있는 것입니다. 어떤 버전을 사용하고 있는지 명확하게 알 수는 없습니다. 1.7에있어? 그것은 나를 위해 1.6과 1.7에서 확실히 작동합니다.

어디에서 충돌했는지 좀 더 구체적으로 생각하면 쉽게 추측 할 수 있습니다. 디버거를 연결하십시오. IE를 디버거를 연결하는 단일 프로세스로 만드는 방법에 대한 정보는 firebreath.org의 "Debugging Plugins"페이지를 참조하십시오.