如何防止电话号码转换成Skype链接?

在安装了Skype的 Windows计算机上,它倾向于将所有电话格式的号码转换为Skype链接,以便您可以点击它以便在Skype上拨打电话。

问题是你如何防止在页面上发生一定数量的?

尽量不要将数字输出为单个文本。 代替

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

尝试

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

它会禁用Skype

更新

这个答案不再准确 – 请参阅Daniel Byrne的答案以获取更多信息。


只使用CSS,可以通过覆盖Skype使用的样式来删除它。 尝试将这两行添加到样式表中:

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

Skype已经采取了将一串随机生成的数字添加到span标签的末尾,所以上述Groo的响应不再是完全准确的。 要正确select页面上的所有Skype标签,请使用如下的CSS3通配符select器:

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

^=运算符使属性select器对具有包含值为STARTS WITH'skype_pnh_container'和'skype_pnh_print_container'的类的元素进行加工,

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

官方的解决scheme是将以下元标记添加到您的网页的头部分。 这将阻止Skype的电话号码重新格式化。

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

编辑:对不起,我刚刚发现IE9有这个解决scheme的问题,因为它不支持软连字符。

有一个替代解决scheme来解决这个问题:

您可以在电话号码内使用软连字符( &shy; )来解决问题。 例如,给定的数字

 <span>0664 111 222 3</span> 

改成

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

而且要快乐 :)

我刚刚发现,如果您使用新的HTML5 tel协议,它会阻止Skype垃圾出现:

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

我看到了interweb很多可能的解决scheme的JavaScript解决scheme,meta标签,CSS,也许我发现一个实际上为我的网站工作的黑客,我在一些电脑上testing,它工作,我认为这将工作,直到Skype不改变在他们的代码。

我正在寻找什么是在我们的网页上正在做的Skype,它创造了一些跨越电话号码,正如你已经说过的,但它甚至添加一个标签在文档的后面,身体closures标签后。

在这里我看到了这个诀窍! 在该对象之前有一个configuration标签:

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

这是由插件dynamic添加的! 但这里的解决scheme变得明显,为了避免Skype与您的devise搞乱,并避免更改电话号码解决scheme是在文档中很早插入以下标签:

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

注意autoextractnumbers =“0”,这里是诀窍。 该文件将不会validation该标签,因为没有属性“autoextractnumbers”,但我注意到,即使注释它工作:

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

而就是这样! 享受你的网页免费杂乱的插件! 而你的网页仍然会正确validation。 希望它也适用于你! 我已经testing了几台计算机3个不同的浏览器和2个不同的Skype版本,现在它适用于我,让我知道,如果它也适用于你,如果它的作品分享:)

我在号码的第一项中增加了一个空格。

而不是(888)222-3333我进入(888)222-3333

授予:可能看起来不可思议,但它的工作原理很简单。

我在数字前的一个范围中添加了一个连字符,然后在span style中设置了display:none。

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

所有你需要做的是确保你的CSSselect器比Skypeselect器更具体。 在他们使用的当前的Skype样式表中:

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

你将需要添加一个额外的类 – 你自己的网站上下文 – 这个select器,即

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

尝试这个。 它用一个不可见的跨度+原始空格字符replace电话号码中的空格。 因此,Skype不能理解它是一个数字,我们心爱的电话号码保持不变:)我不得不使用这种方法,因为我通常让内容pipe理员改变他的意愿电话号码,因此我不能在JavaScript内使用硬编码的数字。 当然你的标记看起来应该像<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;")); }); } }); 

你也可以离开这个号码,并用JS删除它。

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

在普通的HTML中做起来比较困难,但是Skype并没有移除父容器,所以把这个数字放在带有ID的东西上,你可以在它上面做一个“getElementById”,把innerHTML设置成电话号码。

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

如果您在iOS上使用PhoneGap,则可能是UIWebView问题(与Skype分开)。

如果您不想在UIWebView中生成自动链接,则以下行修复了这个问题:

 self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone; 

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