前言
之前我写过一篇文章关于如何在浏览器中检测是否安装了客户端,今天要说的是在浏览器中打开客户端。
这是为什么呢?
因为检测是否安装了客户端是不准的。比如:IOS6以下的系统,Android下猫眼后台进程被关闭了等。
这个时候我们就需要尝试性的去打开客户端,如果打不开,我们就去下载或者掉到对应下载页。
这也就是本文的核心。
实现
如果我们通过Google搜索相关的东西。
我们都不难找到这么一个事实就是尝试性的去打开,打开不了就去下载。
这其中有一个非常巧妙的地方就是,通过判断触发的时间与执行settimeout的时间差值是否小于设置的定时时间加上一个浮动值(一般设为100)。
所以,就有了上面的例子。Date.now() - startTime < 500
其他说明
除了上面例子,我还做了其他两个方案。
- 一个是创建一个script标签,src为appUrl。然后判断监听onload和onerror属性。
但发现不管客户端有没有安装都是error。即调用onerror方法。
- 另一个是创建iframe标签,基本思路和上面一致。
但发现不管安没安装客户端,都不会触发onload和onerror事件。
给出一个实现