2

I have write a protocol handler to launch the Cisco Jabber Device. Following is my code.

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

It launch the Cisco Jabber if it installed on client machine. But I want to show warning and download URL if not installed. How it is possible?

radai
  • 23,949
  • 10
  • 71
  • 115
Masudul
  • 21,823
  • 5
  • 43
  • 58
  • 1
    duplicates http://stackoverflow.com/questions/3411875/how-to-detect-whether-a-protocol-is-supported-through-web-browser http://stackoverflow.com/questions/836777/how-to-detect-browsers-protocol-handlers – Prinzhorn Jun 27 '13 at 07:02

1 Answers1

2

Following HTML file should serve your purpose, make sure that you change the jQuery source file link to suite your own need (within the head tag):

<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> 
Ali Azam
  • 56
  • 1
  • 3