2009-11-21 42 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

这不起作用,插件命名与版本号,所以你的代码出现即使安装时也未定义 – 2014-03-27 17:06:31

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

对于没有的担心更全面,更简单的方法,即插件被改名不管什么原因,你可以MIME类型的数组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回退到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,Windows上我的Chrome浏览器有7份.. 。幸运的是,我有一个Chromebook,它没有安装Qt插件,也没有可用的插件,所以我正在检查并查看可以区分的QT插件,这是我认为最好的。

我从来没有理解为什么测试是如此重要,直到在网上看到每个人的可怕代码,令人难以置信。我知道没有人关心IE,但像||而不是&&这样的基本信息只能让其他开发人员重复使用。

我检查了Windows,Linux和Android(IE和Chrome)上的这个。onscroll给了一些跳跃,但没有JQuery或其他框架,我猜(不包括“插件不支持”!