anjoschu: Protokoll-/URI-Schema-Unterstützung per JavaScript prüfen

Beitrag lesen

Hallo,

ich suche eine Möglichkeit, per JavaScript herauszufinden, ob der Browser ein bestimmtes URI-Schema ("meinschema:xyz", vergleichbar z.B. mit "skype:xy") unterstützt.

Die Anwendung ist, dass der Kunde soll von der Web-Seite aus ein lokales Programm öffnen können soll. Das geht ja prinzipiell erst mal einfach durch ein
<a href="meinschema:blablubb">Programm Öffnen</a>.

Wenn aber der Kunde das Programm nicht installiert hat, wurde auch das Schema "meinschema" nicht registriert und damit kennt der Browser das Schema "meinschema" nicht. In dem Fall soll statt des Programms ein Kontaktformular aufgehen. Ich habe mich dazu ins onclick des Linkankers gehängt. Der Klickhandler soll prüfen, ob des Schema unterstützt wird und im Negativfall statt meiner Spezial-URI das Formular aufrufen. Das Ganze sollte in etwa so aussehen:

...
<a href="meinschema:blablubb" onclick="openSchema(this.href);return false;">
     Programm Öffnen
</a>
...

function openSchema(href)
{
    if ( /* Protokoll meinschema wird unterstützt */ ) {
        window.location.href = href;
    }
    else {
        window.location.href = "fallbackformular.html";
    }
}

Ich habe schon als Workaround versucht, meinen Link per JavaScript in einem versteckten iFrame zu öffnen, und anschließend zu versuchen zu prüfen, ob das Öffnen geklappt hat. Leider verhalten sich die Browser dabei äußerst unterschiedlich, das macht die Erfolgsprüfung ziemlich haarig und nicht gerade Browserübergreifend (Firefox wirft eine Exception bei Misserfolg, IE verbietet bei Erfolg den Zugriff auf die iframe-location, etc.)

Idealerweise möchte ich keine sichtbare Browser-Fehlermeldung bei Nicht-Unterstützung des URI-Schemas "meinschema."

Mit ActiveX ginge es im IE, aber das ist leider keine optimale Lösung, weil das Ganze auch im Firefox funktionieren soll.

Danke und schöne Grüße
Andreas