1、检测非IE浏览器

  可以使用plugins数组来达到这个目的,例:

  //检测插件(在IE中无效)
function hasPlugin(name){
name = name.toLowerCase();
for(var i=0;i<navigator.plugins.length;i++)
{
if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1)
{
return true;
}
}
return false;
}
//检测Flash
alert(hasPlugin("Flash"));

2、检测IE浏览器

  因为IE不支持Netscape式的插件。在IE中检测插件唯一的方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。IE是以COM对象的方式使用插件的,而COM对象使用唯一标识符来标识。因此,要检查特定的插件就必须知道其特定的标识符。如Flash的标识符是ShockwaveFlash.ShockwaveFlash。

 //检测IE中的插件
function hasIEPlugin(name)
{
//用try-catch进行实例化,因为创建未知的COM对象会导致抛出错误,如果实例化成功返回true,否则抛出异常返回false
try {
new ActiveXObject(name);
return true;
} catch (ex) {
return false;
}
}
//根据Flash标识符,检测Flash插件
alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));

3、检测所有浏览器

  先使用不针对IE的检测插件的方法,再使用针对IE的检测插件的方法,只要任何一个方法检测到将会返回true,否则返回false。

 //检测所有浏览器中的Flash
function hasFlash()
{
var result = hasPlugin("Flash");//先检测非IE浏览器
if(!result)
{
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");//再检测IE
}
return result;
}
//检测Flash
alert(hasFlash());

JS 检测浏览器中是否安装了特定的插件的更多相关文章

  1. js检测浏览器中是否安装了flash播放插件

    这两天工作中需要在网页中嵌入flash小游戏,我使用的是swfobject.js version:1.5.其他方面都很好,唯独版本检测这里一直没有搞通,后来实在无奈之下,改用js来检测浏览器的flas ...

  2. navigator,JS检测浏览器插件

    最早由Netscape Navigator 2.0引入的navigator对象,现在已经成为识别客户端浏览器的事实标准.虽然其它浏览器也通过其它方式提供了相同或相似的信息(例如,IE中的window. ...

  3. 检测手机中是否安装了google地图,没有则提示安装,并跳转到地图查找特定的地点

    /** * 检测手机中是否安装了某个特定的app,若没有提示安装 */ PackageInfo name_2 = null; try { // 若没有这个包名会异常 name_2 = getPacka ...

  4. Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch(1)

    继PHP.Ruby.Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库.可以在Node.js和浏 ...

  5. Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch

    继PHP.Ruby.Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库.可以在Node.js和浏 ...

  6. jquery和js检测浏览器窗口尺寸和分辨率

    jquery和js检测浏览器窗口尺寸和分辨率,转载自网络,记录备忘 <script type="text/javascript">$(document).ready(f ...

  7. js 在浏览器中的event loop事件队列

    目录 前言 认识一个栈两个队列 执行过程 异步任务怎么分配 简单例子 难一点的例子 前言 以下内容是js在浏览器中的事件队列执行,与在nodejs中有所区别,请注意. 都说js是单线程的,不过它本身其 ...

  8. win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件

    win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件   1.去git上下载react-devtools文件到本地,https://github.com/fac ...

  9. JS检测浏览器Adobe Reader插件

    Web应用中当我们希望向用户显示pdf文档时候,如果用户安装了Adobe Reader之类的pdf阅读器,就可以直接打开文档在浏览器中显示, 但是,当用户没有安装这类软件的时候,自然是打不开的,为了系 ...

随机推荐

  1. OC 内存管理之自动内存管理ARC

    一.基本简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因 ...

  2. TMemo Ctrl + A

    http://delphi.about.com/od/adptips2004/a/bltip0804_4.htm Here's how to implement the code for the CT ...

  3. python3 win10_x64 安装pcapy

    稀里糊涂就装上了 大概记录一下都有什么. visual studio build tools 2015 下载地址: http://landinghub.visualstudio.com/visual- ...

  4. 关于C++静态成员函数访问非静态成员变量的问题

    静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存.静态成员函数没有隐含的this自变量.所以,它就无法访问自己类的非静态成员 代码 ...

  5. CDMA LTE FAQ2

    1.UE等级 LTE CAT4,应该指的是LTE Category4,字面意思是LTE的ue-Category设置为4.ue-Category指的是UE的接入能力等级.也就是UE能够支持的传输速率的等 ...

  6. RNN - LSTM - GRU

    循环神经网络 (Recurrent Neural Network,RNN) 是一类具有短期记忆能力的神经网络,因而常用于序列建模.本篇先总结 RNN 的基本概念,以及其训练中时常遇到梯度爆炸和梯度消失 ...

  7. Word2003文档窗口分成上下两个独立的窗口

    http://www.officezu.com/word/2003/index16.html 拆分窗口就是把一个Word2003文档窗口分成上下两个独立的窗口,从而可以通过两个Word2003文档窗口 ...

  8. 外部获取IndexPath的几种方式(关联对象等)

    1. 一般方式 - (void)buttonAction:(UIButton *)sender { UITableViewCell *cell = (UITableViewCell *)[[sende ...

  9. 解决Android adjustresize全屏无效问题

    最近在做一个即时通信的聊天页面时,页面要求要全屏显示,这个时候android:windowSoftInputMode = "adjustResize"属性就不起作用了,如果使用an ...

  10. UnicodeDammit

    UnicodeDammit 是BS内置库, 主要用来猜测文档编码. 编码自动检测 功能可以在Beautiful Soup以外使用,检测某段未知编码时,可以使用这个方法: from bs4 import ...