2009-11-21 4 views

답변

0

Java의 경우 navigator.javaEnabled()을 사용할 수 있습니다. 또는 당신은 여기에서 찾아보실 수 있습니다 : http://www.pinlady.net/PluginDetect/JavaDetect.htm

퀵타임를 들어, 당신은 할 수 있습니다 :

var QtPlugin = navigator.plugins["Quicktime"]; 
if (QtPlugin) {//QuickTime is installed} 

는 여기를 참조하십시오 : http://javascript.internet.com/miscellaneous/check-plugins.html 물론

+0

플러그인이 버전 번호로 명명되어 코드가 표시됩니다. 설치된 경우에도 정의되지 않음 –

0

이 IE에서 작동하지 않습니다. IE에서 플러그인을 확인하는 유일한 방법은 VB 스크립트를 사용하는 것이며 매우 이상하고 지저분합니다. 특정 플러그인 버전 만 테스트 할 수 있습니다 (예 : "quicktime"은 잘라내 지 않음). 5보다 오래된 버전에는 게시되지 않은 버전을 지정해야합니다. I can't find a reference for version 7

0

위의 예제는 질문의 QuickTime 부분에 대한 답변이 없으므로 지금 여기에 쓰여지고 있습니다. 질문은 끝났지 만 조금 늙었습니다. (A)의 걱정없이보다 포괄적이고 절대 안전한 방법의 예를 들어

var p = navigator.plugins; 
var qtcheck = 0; 
for (i=0;i<p.length;i++) { 
    if (p[i].name.match(/QuickTime/) != null) { 
    qtcheck++ 
    } 
} 
if (qtcheck > 0) { // do nothing, QuickTime is intalled } 
else { 
videos = document.querySelectorAll('object[type="video/quicktime"]') 
// use .getElementById instead if there are multiple videos 
// replace them with document.createElement('img') 

어떤 이유에서 이름이 변경되는 플러그인, 당신은 객체가 지원 여부의 궁극적 인 대답은 type="video/quicktime"에 대한 MIME 형식의 배열 내에서 확인하실 수 있습니다 (또는 QT 비디오를 사용하지 않는 경우에는 대신 다른 용도로 사용하십시오).

이 대신 플러그인을 통해 루프 안에 루프를 만드는 의미하지만, 단지 일치하는 문자열보다 더 확고한 검증이다 : 나는 온라인으로 주변 검색과 큰 IE의 무리 스크립트를 here를 폴백 발견

function checkQT() { 
var p = navigator.plugins; 
var QT = false; // assume you don't have it 
    for (i=0;i<p.length;i++) { 
    for (j=0;j<p[i].length;j++) { 
     if (p[i][j].type == "video/quicktime") { 
     QT = true; 
     return true; 
     } 
     else continue; 
     return false; 
    } 
    } 
} 

(페이스트 서비스 코드가 계속 것입니다 있는지 확실하지 않습니다 그래서 gisted it for posterity),있는 나는 퀵타임 하나에 나섭니다 :

function IEhasQT() { 
    if (!window.ActiveXObject) return false; 
    try { if(new ActiveXObject("QuickTime.QuickTime")) return true; } 
    catch (e) {} 
    try { if (new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck')) return true; } 
    catch (e) {} 
    return false; 
} 

좀 다른 사람을 시험하고 그들은 단지 작동하지 않았다 - 예외를 잡는 것이 중요 .

내가하고있는 일을하고 있다면 (gif 애니메이션에 대한 퀵타임 폴백) 비디오의 속성을 사용하여 이미지 (또는 사용중인 다른 것)에 제공 할 수 있습니다. 이것에 대한 단점은 onload뿐만 아니라 onload (또는 Jquery를 사용)에 연결해야한다는 것입니다. 브라우저가 DOM을로드하려고하기 전에 시도하고 피하는 방법에 상관없이로드를 시도해야합니다. 다른 사람이 글을 읽는 사람이 비슷한 대답을 찾고 있다면

는, 그렇게 할 수있는 코드가 퀵타임 설치의 여러 버전을 가질 수 있습니다, 이상하게도

function noQTfallback() { 
    var vid1 = document.getElementById("<insert your object id>"); 
    var vid1gif = document.createElement('img'); 
    vid1gif.setAttribute("src","<insert your URL source>"); 
    vid1gif.setAttribute("style",vid1.getAttribute("style")); 
    document.getElementById("<...>").replaceChild(vid1gif, vid1); 
} 

function IEhasQT() { 
// as above 
} 

function checkQT() { 
// as above 
} 

function QTbackup(){ 
if (!checkQT() && !IEhasQT()) { 
    noQTfallback(); 
} 
} 

window.document.body.onload = QTbackup; 
window.onscroll = QTbackup; 

이다, Windows에서 내 크롬 브라우저는 7 개 사본을 가지고 .. 다행히 QT 플러그인을 설치하거나 사용할 수없는 크롬 북을 가지고 있으므로이를 구별하기 위해 무엇이 작동하는지 확인하고 있습니다. 이것이 내가 생각해 낸 최고의 것입니다.

나는이 온라인에서 모든 사람의 끔찍한 코드를 볼 때까지 테스트가 왜 그렇게 중요한지 전혀 이해하지 못했습니다. IE에 대해서는 아무도 신경 쓰지 않지만 || 대신 &&과 같은 기본적인 것들은 다른 개발자가 재사용 할 수 있도록 거짓말을하는 것이 좋지 않습니다.

Windows, Linux 및 Android (IE 및 Chrome)에서이를 확인했습니다.onscroll은 약간의 점프를 제공하지만 Jquery 나 다른 프레임 워크가 없으면 피할 수없는 것 같아요. (플러그인이 지원되지 않습니다.)

관련 문제