JavaScript判断TIF插件是否安装
起因
- 下载tif插件,如alternatiff, 是个Ocx/ActiveX控件,只支持ie浏览器
- 在后台解析tif文件,tif文件有可能是多张的. 提取每一张图片返回.
这里使用第一种方式.alternatiff是免费的插件,因为只考虑支持ie浏览器.
alternatiff下载地址: http://alternatiff.com/
这里使用的是 alternatiff-1.8 版本.安装完成之后.打开ie浏览器会插件提示.点击允许之后. 打开有tif的页面,就可以查看tif了.
1. 最初的代码(简单粗暴)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<embed id="tifView" src="29.tif" width="750" height="535" />
</body>
</html>
2. 展示没问题,要是没安装插件该怎么办呢? 所以要加判断插件是否安装
正常使用Ocx/ActiveX控件都是使用object标签,obeject标签是需要知道控件classid的.在VS2008自带工具中有一个叫 远程注册表编辑器(ccregedt.exe)

打开之后查找.
那怎么判断控件是否安装呢?在调试监视变量的时候,发现tifObj.object对象下还有很多alternatiff函数.如果没有安装alternatiff的object是为null,所以可以根据object判断.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JavaScript判断ActiveX是否安装</title>
</head>
<body>
<div id="container">
<object id="tifObj" width="750" height="530" classid="CLSID:106E49CF-797A-11D2-81A2-00E02C015623">
<param name="src" value="29.tif" />
</object>
</div>
<script type="text/javascript">
tifObj.object.AboutBox(); //alternatiff 关于对话框
alert(tifObj.object == null); //如果没安装ocx/ActiveX控件,object为null
</script>
</body>
</html>
alternatiff是Ocx插件,用object判断ActiveX靠谱吗?做了一下测试,是完全没问题的.
最终处理改为
<script type="text/javascript">
if(tifObj.object != null){
//正常处理
}
else{
//弹窗提示,下载alternatiff插件
}
</script>
秋风
2018-04-04