我已经编写了一个协议处理程序来启动Cisco Jabber设备。下面是我的代码。

<input onclick="javascript:window.location.href = 'movi:12345'
 type="button" value="Launch" />

如果安装在客户机上,它就会启动Cisco Jabber。但我想显示警告和下载网址,如果没有安装。怎么可能?

最佳答案

下面的HTML文件应该符合您的目的,请确保更改jQuery源文件链接以满足您自己的需要(在head标记内):

<html>
<head>
<script type='text/javascript' src='jquery-1.5.1.js'></script>
<script type='text/javascript'>

var protocolCheckerTimer = false;
var installerSites = [];
var currentProtocol = false;
var protocolFound = false;
var poppingUp = false;

$(document).ready(function (e){

    $(window).bind('blur', interceptProtocolStartup);
    $(document).bind('focusout', interceptProtocolStartup);

    installerSites['movi'] = 'https://supportforums.cisco.com/docs/DOC-23292';
    installerSites['sip'] = 'http://www.linphone.org/eng/download/packages/';
    installerSites['skype'] = 'http://www.skype.com/en/download-skype/skype-for-computer/';
    installerSites['glow'] = 'http://www.glowpoint.com';

    $('a.protoco_handler').click(function (e) {
        var sUrl = $(this).attr('href');
        var urlComponents = sUrl.split(':');
        currentProtocol = urlComponents[0];
        log('checking protocol for ' + currentProtocol);
        protocolCheckerTimer = setTimeout(waitForProtocolHandler, 200);
        $('#hidIFrame').attr('src', sUrl);
        return false;
    });

});


function waitForProtocolHandler() {
    if (protocolFound === true) {
        resetAll();
        return;
    }
    poppingUp = true;
    if (confirm('Handler for protocol ' + currentProtocol + ' not found. Would you like to install?')) {
            log('opening installer site ' + installerSites[currentProtocol] + ' for protocol ' + currentProtocol);
            window.open(installerSites[currentProtocol]);
        }
        resetAll();
    }

    function resetAll() {
        protocolFound = false;
        currentProtocol = false;
        if (protocolCheckerTimer !== false) {
            clearTimeout(protocolCheckerTimer);
            protocolCheckerTimer = false;
        }
        poppingUp = false;

    }

    function interceptProtocolStartup() {
        if (poppingUp === true) {
            return;
        }
        log('protocol found, clearing timeout');
        resetAll();
    }

    function log(msg) {
        if (window.console) {
            console.log(msg);
        }
    }
</script>
</head>

<body>
<ul>
<li><a class='protoco_handler' href='movi:[email protected]'>Launch Jabber</a></li>
<li><a class='protoco_handler' href='sip:[email protected]'>Launch Cisco</a></li>
<li><a class='protoco_handler' href='skype:mdaliazam'>Launch Skype</a></li>
<li><a class='protoco_handler' href='glow:[email protected]'>Launch Glowpoint :)</a>        </li>
</ul>

<iframe id='hidIFrame' style='display:none'></iframe>
</body>
</html>

关于php - 某些Javascript是否可以检测是否已安装Cisco Jabber?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17334532/

10-13 01:57