2

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

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

如果 Cisco Jabber 安装在客户端机器上,它会启动它。但如果未安装,我想显示警告和下载 URL。怎么可能?

4

1 回答 1

2

以下 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:100001@ovcloud.com'>Launch Jabber</a></li>
<li><a class='protoco_handler' href='sip:azam@ovcloud.com'>Launch Cisco</a></li>
<li><a class='protoco_handler' href='skype:mdaliazam'>Launch Skype</a></li>
<li><a class='protoco_handler' href='glow:azam@ovcloud.com'>Launch Glowpoint :)</a>        </li>
</ul>

<iframe id='hidIFrame' style='display:none'></iframe>
</body>
</html> 
于 2013-06-27T07:28:07.503 回答