日期:2014-05-16 浏览次数:20329 次
一,由于公司为了安全性,要求把登录页移到c/s界面去登录,由c/s负责硬件验证,并打开主页。但是公司里面又有加盟商,这些用户不用经过硬件验证可以直接进入主页。
由上问题引申出,要去判断该客户端是否有安装该c/s程序,window.location.href打开程序,没有的话,直接进入主页
?
1,当你用window.location.href去打开注册的应用程序时,如果有的话,他会去打开,没有的话,try/catch也捕获不到异常,而停止执行。
2,所以查看了淘宝中阿里旺旺的实现,当本机有安装阿里旺旺时,会打开阿里旺旺的应用程序,没有的话,就会去打开网页版阿里旺旺。可查看webww-min.js
?
_checkWangWangInstalled : function() { var J = false, H = k.unparam(o.get(h)), L = (navigator.platform .indexOf("Mac") > -1) ? true : false; if (!L) { if (H.c == 1) { J = true; G = 1 } if (!J && t.ie) { J = this._checkWangWangVersion() } else { if (t.firefox || t.chrome) { var I = navigator.mimeTypes["application/ww-plugin"]; if (I) { var K = F.createElement("embed"); K.setAttribute("type", "application/ww-plugin"); k.DOM.css(K, "visibility", "hidden"); k.DOM.css(K, "width", 0); k.DOM.css(K, "height", 0); KISSY.ready(function(M) { F.body.appendChild(K); numberify = function(N) { var O = 0; return parseFloat(N.replace(/\./g, function() { return (O++ === 0) ? "." : "" })) }; if (numberify(K.NPWWVersion()) >= 1.003) { J = true } else { J = false } if (K.tagName.toLowerCase() == "embed") { K.parentNode.removeChild(K) } H.c = 0; o.set(h, M.param(H), 365, b, "/") }) } } } } else { if (t.firefox || t.chrome || t.opera || t.safari) { var I = navigator.mimeTypes["application/ww-plugin"]; if (I) { var K = F.createElement("embed"); K.setAttribute("type", "application/ww-plugin"); k.DOM.css(K, "visibility", "hidden"); k.DOM.css(K, "width", 0); k.DOM.css(K, "height", 0); F.body.appendChild(K); if (K.isMacWWInstalled()) { J = true } K.parentNode.removeChild(K); H.c = 0; o.set(h, k.param(H), 365, b, "/") } } } if (J) { H.c = 1; o.set(h, k.param(H), 365, b, "/") } if (location.href.indexOf("topen") > -1) { J = false } return J }, _checkWangWangVersion : function() { var J, I = true, H = k.unparam(o.get(h)); try { J = new ActiveXObject("aliimx.wangwangx") } catch (K) { try { J = new ActiveXObject("WangWangX.WangWangObj"); w = 5 } catch (K) { if (t.ie) { H.c = 0; I = false; G = 0; o.set(h, k.param(H), 365, b, "/") } } } finally { J = null } return I },
?由上可以看出,他是对ie(Activex)与firefox/chrome(在plugins下放入一个插件,可用navigate读到)分别开发了插件,然后进行判断,故依照了他进行了两个插件的开发判断。
?
?
?
?
?