JavaScript - how to detect if the Custom URL scheme is available or not available? JavaScript - how to detect if the Custom URL scheme is available or not available? google-chrome google-chrome

JavaScript - how to detect if the Custom URL scheme is available or not available?


EDITFollowing suggestions in comments:

function goto(url, fallback) {    var script = document.createElement('script');     script.onload = function() {         document.location = url;    }     script.onerror = function() {         document.location = fallback;    }     script.setAttribute('src', url);     document.getElementsByTagName('head')[0].appendChild(script);}

and

<a href="javascript:" onclick="goto('juniper:open', 'https://www.junper-affiliate.com/setup.zip');">TEST 2</a> 

The price you have to pay, is a duplicated request for the page.

EDIT

This is a good workaround for same-origin policy, which prevents an async version using XMLHTTPRequest to work properly, since SOP restricts cross-domain requests to http and juniper:open would therefore always fail.

function goto(url, fallback) {    var xmlhttp = new XMLHttpRequest();    xmlhttp.open('GET', url, false);    try {        xmlhttp.send(null);                  // Send the request now    } catch (e) {        document.location = fallback;        return;    }    // Throw an error if the request was not 200 OK     if (xmlhttp.status === 200) {        document.location = url;    } else {        document.location = fallback;    }}

EDIT

The initial solution below doesn't actually work 'cause no exception is being thrown if the protocol is not supported.

  try {    document.location = 'juniper:open';  } catch (e) {    document.location = 'https://www.junper-affiliate.com/setup.zip';  }


After searching a lot i have not came to anything which can help to solve my problem. But this is what i am now making

1) Write a small tiny webserver which can run in the PC for 24/7 on boot, on crash. Use native python:

python -m SimpleHTTPServer [port]

2) tiny webserver will listen on port abnormal such as 10001 or such TCP ports which never get used

3) from Browser we have to communicate with the http://localhost:10001 just to get a reply

4) based on that reply we have to decide

Otherwise there is no way seems to be available

EDIT: Or you can do this way: InnoSetup - Is there any way to manually create cookie for Internet explorer?