JavaScript判断TIF插件是否安装

起因


最近有一个页面(很早的项目),要给其他系统做对接.展示的内容有很多图片和文件要展示,大多是jpg/bmp和pdf,还有就是tif格式文件,浏览器默认是不支持这种格式文件的.要支持tif有两个方式.
  1. 下载tif插件,如alternatiff, 是个Ocx/ActiveX控件,只支持ie浏览器
  2. 在后台解析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) 
远程注册表编辑器
打开之后查找.
查找alternatiff的classid
那怎么判断控件是否安装呢?在调试监视变量的时候,发现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可调用的函数

alternatiff是Ocx插件,用object判断ActiveX靠谱吗?做了一下测试,是完全没问题的.

最终处理改为

<script type="text/javascript">

    if(tifObj.object != null){
        //正常处理
    }
    else{
        //弹窗提示,下载alternatiff插件
    }

</script>
秋风 2018-04-04