web-dev-qa-db-fra.com

Comment empêcher la conversion des numéros de téléphone en liens Skype?

Sur les machines Windows avec Skype installé, il a tendance à convertir tous les numéros au format téléphonique en liens Skype afin que vous puissiez cliquer dessus afin de passer un appel sur Skype.

La question est de savoir comment empêcher que cela se produise pour un certain nombre sur la page?

42
Ain Tohvri

Essayez de ne pas sortir les chiffres sous forme de texte unique. Au lieu de

<span>888-555-1212</span>

essayer

<span>888-</span><span>555-1212</span>

et cela désactivera skype

45
John Saunders

Mise à jour

Cette réponse n'est plus exacte - voir réponse de Daniel Byrne pour plus d'informations.


À l'aide de CSS uniquement, il peut être supprimé en remplaçant les styles utilisés par Skype. Essayez d'ajouter ces deux lignes à votre feuille de style:

span.skype_pnh_container {display:none !important;}
span.skype_pnh_print_container {display:inline !important;} 
39
Groo

Skype a pris l'habitude d'ajouter une chaîne de nombres générée aléatoirement à la fin de leur balise span, de sorte que la réponse ci-dessus de Groo n'est plus entièrement exacte. Pour sélectionner correctement toutes les balises Skype sur une page, utilisez des sélecteurs génériques CSS3 comme ceux-ci:

span[class^='skype_pnh_container'] {display:none !important;}
span[class^='skype_pnh_print_container'] {display:inline !important;}

les ^= L'opérateur provoque un sélecteur d'attribut pour les éléments mach qui ont une classe contenant une valeur qui COMMENCE PAR 'skype_pnh_container' et 'skype_pnh_print_container'

14
Daniel Byrne

La solution officielle consiste à ajouter la balise META suivante à la section principale de votre page Web. Cela empêchera Skype de reformater les numéros de téléphone.

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" /> 

Il s'agit d'une balise spécifique au fournisseur. Voir balise Meta de la barre d'outils Skype

13
richddr

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />

13
dobs

EDIT: Désolé, je viens de découvrir qu'IE9 a des problèmes avec cette solution car elle ne prend pas en charge les tirets doux.

Il existe une solution alternative à ce problème:

Vous pouvez utiliser un caractère de trait d'union (&shy;) à l'intérieur du numéro de téléphone pour résoudre le problème. Par exemple, étant donné le nombre

<span>0664 111 222 3</span>

changer pour

<span>0664&shy; 111 222 3</span>

et soyez heureux :)

5
xon1c

Je viens de découvrir que si vous utilisez le nouveau protocole tel HTML5, il bloque l'apparition des fichiers indésirables Skype:

<a href="tel:+18001234567">1 800 123 4567</a>
4
Yoni

J'ai vu sur l'interweb beaucoup de solutions possibles, des solutions javascript, des balises META, des CSS et peut-être que j'ai trouvé un hack fonctionnant réellement pour mes sites Web, j'ai testé sur certains ordinateurs et cela fonctionne et je pense que cela fonctionnera jusqu'à ce que Skype ne change pas quelque chose dans leur code.

Je cherchais ce que fait exactement Skype sur nos pages, et cela crée une certaine étendue autour des numéros de téléphone, comme vous l'avez déjà dit, mais il ajoute même une balise à la fin du document, juste après la balise body close.

Et là, j'ai vu l'astuce! Juste avant cet objet, il y a une balise de configuration:

<span id="skype_highlighting_settings" display="none" autoextractnumbers="1"></span>

Ceci est ajouté dynamiquement par le plugin! mais ici, la solution devient évidente, pour arrêter définitivement skype de jouer avec votre conception et éviter de changer de numéro de téléphone, la solution consiste à insérer très tôt dans le document la balise suivante:

<span id="skype_highlighting_settings" display="none" autoextractnumbers="0"></span>

remarquez le autoextractnumbers = "0", voici l'astuce. Le document ne sera pas validé de toute façon avec cette balise car il n'y a pas d'attribut "autoextractnumbers" mais j'ai remarqué que cela fonctionne même si commenté:

<!-- <span id="skype_highlighting_settings" display="none" autoextractnumbers="0"></span> -->

Et c'est tout! Profitez de vos pages Web sans plugins en désordre! Et votre page Web sera toujours validée correctement. J'espère que ça marchera pour toi aussi! J'ai testé sur deux ordinateurs 3 navigateurs différents et 2 versions différentes de skype, pour l'instant cela fonctionne pour moi, faites-moi savoir si cela fonctionne pour vous aussi et si cela fonctionne, partagez-le :)

2
lukart

J'ai ajouté un trait d'union dans une plage avant le nombre, puis j'ai défini l'affichage: aucun sur le style de plage, ce qui a fonctionné.

    <span class="anti-skype-hyphen">-<span>01273 200 ***
1
Stu

Essaye ça. Il remplace les espaces dans le numéro de téléphone par une étendue invisible + le caractère d'espace d'origine. Skype ne peut donc pas comprendre qu'il s'agit d'un numéro et notre numéro de téléphone bien-aimé reste le même :) J'ai dû utiliser cette approche car je laissais généralement l'administrateur de contenu changer les numéros de téléphone à sa guise, donc je ne pouvais pas utiliser un numéro codé en dur dans javascript. Bien sûr, votre balisage devrait ressembler à <span class="phone_number">your number with some spaces inside it<span>.

$(document).ready(function() {
    if ($(".phone_number").length>0) {
        $(".phone_number").each(function() {
            $(this).html($(this).html().replace(/\s/g,"<span style=\"display:none\">_</span>&nbsp;"));
        });
    }
});
1
mario-mesiti

Tout ce que vous devez faire est de vous assurer que votre sélecteur CSS est plus spécifique que celui utilisé par Skype. Dans la feuille de style skype actuelle, ils utilisent:

span.skype_pnh_container span.skype_pnh_highlighting_inactive_common span.skype_pnh_text_span {...}

Vous devrez ajouter une classe supplémentaire - votre propre contexte de site Web - à ce sélecteur, c'est-à-dire.

.myclass span.skype_pnh_container span.skype_pnh_highlighting_inactive_common span.skype_pnh_text_span {...}
1
Timidfriendly

J'ai ajouté un espace dans le premier terme du numéro.

Au lieu de (888) 222-3333 je suis entré (888) 222-3333

Accordé: peut sembler bizarre, mais cela fonctionne et c'est simple.

1
Juan

Vous pouvez également laisser le numéro seul et le supprimer avec JS.

jQuery(document).ready(function(){jQuery('.skype_pnh_container').parent().html('(555) 222 - 3333');
jQuery('.skype_pnh_container').remove()}

C'est plus difficile à faire en HTML normal, mais Skype ne supprime pas le conteneur parent, alors mettez le numéro dans quelque chose avec un ID, vous pouvez faire un "getElementById" dessus, définissez le innerHTML sur le numéro de téléphone.

document.getElementById('phoneNumberContainer').innerHTML='(555) 222 - 4444';

0
Aaron Harun

Si vous utilisez PhoneGap sur iOS, cela peut être un problème UIWebView (distinct de Skype).

La ligne suivante résout le problème si vous ne souhaitez pas que des liens automatiques soient générés dans UIWebView:

self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;

dans AppDelegate.m dans -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

0
mda