Frage Gibt es eine Möglichkeit zu sagen, ob ein Endbenutzer mit Links umgehen kann?


Wenn Sie also eine Verbindung zu einer Telefonnummer herstellen möchten, würden Sie so etwas tun

<a href="tel:18005555555">Click to Call</a>

Dies wird häufig auf mobilen Websites verwendet und gewinnt auch auf Desktop-Websites an Zugkraft (größtenteils dank Skype, denke ich.) Einige Computer / Geräte können es jedoch nicht unterstützen. Gibt es eine Möglichkeit zu sagen, ob ein Benutzer in der Lage ist, tel: Links zu behandeln?

Lösung kann entweder Server-Seite oder Client-Seite sein, aber ich würde mir vorstellen, dass es Client-Seite sein müsste.


17
2018-06-22 14:19


Ursprung


Antworten:


GeräteAtlas und Wurfl Sie können einige dieser Informationen erhalten, aber viele haben darauf hingewiesen, dass es wirklich keine zuverlässige Möglichkeit gibt, die Fähigkeit eines Geräts zu erkennen, einen Anruf zu tätigen. Schließlich könnte sich jemand auf dem Desktop befinden, aber in der Lage sein, basierend auf der von ihm installierten Software (oder sogar deren Betriebssystemfunktionen) einen Anruf zu tätigen.

Im Interesse der Bereitstellung der besten Erfahrung sollten Sie einschließen tel: Links. Das gibt jedem die Möglichkeit, die Nummer zu wählen, wenn sie damit umgehen kann. Sie könnten CSS verwenden, um es weniger link-like zu machen, um potenzielle Verwirrung für nicht zu reduzieren tel: Unterstützung von Browsern / Betriebssystemen. Benutzer, die die Nummer anrufen möchten, wählen sie aus oder tippen sie trotzdem an (in der Hoffnung, die Nummer zu kopieren) und aktivieren entweder den Link (in Touch-Szenarien) oder sehen die Hand (in Mausszenarien) und helfen ihnen so schneller, ihr Ziel zu erreichen .

Als etwas abseits, Einstellung white-space: nowrap auf tel: Links sind immer auch eine gute Idee :-) Das wird Zahlen in einer einzigen Zeile halten, so dass die Bindestriche es nicht zulassen zu brechen.

a[href^=tel:] { white-space: nowrap; }

2
2017-09-16 16:07



Nur ein Gedanke, aber wenn Sie die folgenden Header-Informationen eingeben

<meta name="format-detection" content="telephone=yes">

Sie können Telefonnummern ohne das Präfix tel: (oder sogar einen Anker) eingeben, und der Browser wandelt sie automatisch in klickbare Telefonverbindungen um.

Ich denke, dass dies zuverlässiger sein kann als die Erkennung von Funktionen oder Agenten.


0
2018-06-24 23:03



Soweit ich das beurteilen kann, scheint dies keine gute und zuverlässige Methode zu sein. Es hängt davon ab, welche Software neben dem Browser installiert ist und daher glaube ich nicht, dass sie einer Webseite ausgesetzt wäre (andernfalls können Sie damit überprüfen, ob der Benutzer bestimmte Software installiert hat, insbesondere mit anwendungsspezifischen Links wie iTunes oder Visual) Studio).

EDIT: Wie in den Kommentaren darauf hingewiesen, Firefox versucht zu navigieren und wird stattdessen eine Fehlerseite zeigen, die folgende Lösung wird nicht für Firefox funktionieren.

Eine Alternative dazu ist, einfach mit jemandem umzugehen, der darauf klickt und es funktioniert nicht anständig. Beim Testen mit Chrome scheint der Browser einfach nichts zu tun, wenn das Protokoll nicht erkannt wird. Sie können also einfach einen Onclick hinzufügen, der den Teil danach übernimmt tel: und transformieren click to call in die tatsächliche Anzahl. Wenn man darauf klickt, wird die Zahl angezeigt, wenn sie nichts installiert haben, was vielleicht ein guter Kompromiss ist?


-1
2017-08-21 20:42



Soweit ich weiß, welche Fähigkeiten / Anwendungen ein Benutzer hat, kann aus Sicherheitsgründen schwierig sein, aber Sie können einige Dinge regeln und von dort aus gehen.

Sie könnten versuchen, einen mobilen Browser zu sehen, der die Verbindung handhaben kann, und dann, wenn nicht, sehen, ob das andere Gerät in der Lage ist, eine Telefonnummer zu verwenden, z. Skype, und wenn nicht, zeige einfach eine normale Nummer an.

Dies kombiniert Antworten aus diesen Fragen a href tel und Standardbrowser und Javascript um Skype zu erkennen? 

<div>
<?php if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile') || strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'android')) { echo '<div id="tel"><a href="tel:123456">123456</a></div>'; }else{?>
    <script>
            function skype (failureFunction) {
                var $ = jQuery;

                if ($.browser.safari || $.browser.opera) {
                    return true;
                } else if ($.browser.msie) {
                    try {
                        if (new ActiveXObject("Skype.Detection")) return true;
                    } catch(e) { }
                } else {
                    if (typeof(navigator.mimeTypes["application/x-skype"]) == "object") {
                        return true;
                    }
                }
                $('a[href^="skype:"]').click(function() {
                    failureFunction();
                    return false;
                });
                return false;
            }

        jQuery(function($) {
            if (skype()) {
                $('div#tel').html("<a href='skype:123456'>123456</a>");
            } else {    
                $('div#tel').html("<p>123456</p>");
            };
        });
    </script>
    <div id="tel"></div>
    <?}?>

Ich hoffe, es ist ein Schritt in die richtige Richtung für Sie


-2
2018-06-22 21:42



Eine clientseitige Implementierung könnte unter Verwendung der BrowserDetect Skript und filtern Sie die Browsereigenschaften des Benutzers mit dieser Liste: Kann ich verwenden: URI

var browser = BrowserDetect.browser;
var browserVersion = parseInt(BrowserDetect.version);
var supportsURI = true;

if((browser == 'Firefox' && browserVersion < 2) || (browser == 'Explorer' && browserVersion < 8) || (...)) {
    supportsURI = false;
}

(nicht getestet)

Wenn der Browser keine URI-Schemas unterstützt, können Sie den Link auslösen und einen Leuchtkasten mit den erforderlichen Daten (z. B. die Telefonnummer) anzeigen.


-3
2017-07-05 19:24