2009-11-21 2 views

ответ

0

Для Java вы можете использовать navigator.javaEnabled(). Или вы можете посмотреть здесь: http://www.pinlady.net/PluginDetect/JavaDetect.htm

Для QuickTime, вы можете сделать:

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

Смотрите здесь: http://javascript.internet.com/miscellaneous/check-plugins.html

+0

это не работает, плагины названы с номером версии, чтобы ваш код появился undefined даже когда он установлен –

0

Это, конечно, не работает в IE. Единственный способ проверить плагины в IE - использовать скрипт VB, и это очень странно и беспорядочно. Вы можете тестировать только определенные версии плагинов, например, «quicktime» не будет вырезать его. Вы должны указать версию, которая не публикуется для версий старше 5, и I can't find a reference for version 7

0

Приведенные выше примеры не получили ответа на часть QuickTime вашего вопроса, так что вот что я пишу прямо сейчас даже хотя вопрос был закрыт и немного стар.

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') 

Для более полного и надежного метода, т.е. без беспокойства заглушки в переименованы по какой-либо причине, вы можете проверить в массиве Mimetypes для type="video/quicktime" который является окончательным ответом, будет ли поддерживаться объект (или если вы не используете QT-видео, независимо от того, что вы используете для него).

Это означает создание цикла внутри цикла через плагин вместо, но это более фирму проверка, чем просто матч строки:

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; 
    } 
    } 
} 

Я искал вокруг онлайн и нашел кучу большого IE Отката скрипты here (не уверен, если это паста код услуги будет сохраняться, я gisted it for posterity), из которого я взял QuickTime один:

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; 
} 

Я проверил некоторые другие, и они просто не работают - ловить исключения важно ,

Если вы делаете то, что я делаю (QuickTime fallback для gif-анимации), вы можете захотеть взять атрибуты видео, чтобы предоставить изображение (или что-то еще, что вы используете). Недостатком этого является то, что вам нужно связать его с onscroll, а также с 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; 

Как ни странно, вы можете иметь несколько версий установленных QuickTime, мой Chrome браузер на Windows, имеет 7 копий .. К счастью, у меня есть Chromebook, у которого нет плагина QT, установленного или доступного, поэтому я проверяю и вижу, что работает, чтобы отличить его, это лучшее, что я придумал.

Я никогда не понимал, почему тестирование было настолько важным, что, глядя на ужасный код каждого в этом онлайн, невероятно. Я знаю, что никто не заботится об IE, но основные вещи, такие как ||, а не &&, просто плохие, чтобы уйти, чтобы другие разработчики могли повторно использовать.

Я проверил это на Windows, Linux и Android (IE и Chrome).onscroll дает немного прыжка, но без JQuery или какой-либо другой структуры это неизбежно. Я думаю (и бьет «плагин не поддерживается»!

Смежные вопросы