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

43
在那些安装了Skype的Windows机器上,它往往会将所有电话格式的号码转换为Skype链接,以便您单击它以通过Skype拨打电话。问题是如何防止这种情况发生在页面上的某个特定号码?

3
据我所知,它是你浏览器中的一个插件。前往扩展页面并禁用/卸载它即可。 - ZeissS
修改设置或浏览器配置不是一个选项。我正在寻找一种打断或绕过Skype转换脚本的方法。 - Ain Tohvri
1
@ZeissS 我认为他的意思是通过使用JavaScript,从而使页面禁用Skype的混淆... - Miguel Ventura
3
好问题。Skype处理的链接有点笨重,在狭小的空间中可能会导致格式问题。但禁用电话号码是件好事吗?我在想... - pearcewg
14个回答

45

尝试不要将数字作为单个文本输出。而是:

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

它会禁用Skype。


我使用了这种方法来快速编写插件,可能会有人觉得有用。http://owenmelbz.github.com/noSkype/ - owenmelbz
这仅适用于有限数量的数字。 - c_k
只要您能够实际更改内容,那么您是正确的。如果您正在处理大量数据,或者(例如在CMS设置中)您无法访问数据,则我认为像Richddr提出的更可扩展的解决方案更好。总的来说,我认为内容应该与其呈现分离。 - c_k
@c_k:我从未建议更改数据! - John Saunders
@JohnSaunders 不知道你是否同意,需要将<span>888-555-1212</span>转换为<span>888-</span><span>555-1212</span>,对吧?因此,要么在输入数据中分隔数字,要么通过某些脚本生成<span>。但是,在使用CMS时,这两个选项都很麻烦。或者我错过了什么重点? - c_k
显示剩余4条评论

39

更新

这个答案已经过时了——请查看 Daniel Byrne 的答案获取更多信息。


只使用 CSS,可以通过覆盖 Skype 使用的样式来去除水印。尝试将以下两行添加到您的样式表中:

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

1
你的解决方案对我来说非常有效,感觉就是正确的解决方案(而不是将电话号码拆分成多个span标签)。Hooked on phonics 对我很有帮助!还有,名字和头像都很棒 :) - pearcewg
1
谢谢您的建议。不错的解决方案,但缺点是依赖于Skype生成的CSS元素/类名的准确性。如果它们更改了,网站将再次崩溃。虽然不是最漂亮的,但span解决方案必须是最可靠的。 - Ain Tohvri
8
拆分电话号码的问题在于搜索引擎无法将其识别为一个电话号码,而是将其视为三个独立的小数字。因此,如果人们搜索您的商务电话号码,您的网页可能不会在搜索结果中显示。 - Rodolfo
同样地,我们不应该混淆你想让客户阅读和使用的信息 - tel:协议应该允许手机浏览器直接从浏览器开始呼叫提示,而不是费力地复制粘贴到电话应用程序中。 - iono
真是个冠军!谢谢你。 - Dale

14
Skype已经开始在其span标签的结尾添加随机生成的数字串,因此Groo的上述回复不再完全准确。要正确地选择页面上的所有Skype标签,请使用CSS3通配符选择器,像这样:
span[class^='skype_pnh_container'] {display:none !important;}
span[class^='skype_pnh_print_container'] {display:inline !important;}

^= 运算符使属性选择器匹配具有包含以 'skype_pnh_container' 和 'skype_pnh_print_container' 开头的值的类的元素。


13

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


1
这可能是一个不错的解决方案,但如果你看一下Skype社区论坛上的故障排除长度,它可能不是一个非常可靠的方式。http://forum.skype.com/index.php?showtopic=78380 - Ain Tohvri

13

官方解决方案是在网页的头部添加以下meta标签。这样可以防止Skype对电话号码进行任何重新格式化。

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

这是一个供应商特定的标签。请查看Skype 工具栏元标记


5

编辑:对不起,我刚发现IE9对这个解决方案存在问题,因为它不支持软连字号。

这个问题有另一种解决方案:

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

<span>0664 111 222 3</span>

转换为

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

并且快乐 :)


4
我刚刚发现,如果您使用新的HTML5电话协议,它会阻止Skype垃圾信息的出现:
<a href="tel:+18001234567">1 800 123 4567</a>

与以上所有答案相比,这个对我有效。 - Stijn Bollen

2

我在互联网上看到了很多可能的JavaScript解决方案、元标记、CSS等,也许我找到了一个实际可行的方法用于我的网站,我测试了一些计算机,它工作了,并且我认为它会继续工作直到Skype的代码发生变化。

我正在查看Skype在我们的页面上具体做什么,它在电话号码周围创建了一些span,正如你已经说过的那样,但它甚至在文档末尾,在body关闭标签之后添加了一个a标签。

在这里我看到了诀窍!就在那个对象之前有一个配置标记:

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

这是插件动态添加的内容!但是解决方案变得很明显,为了最终防止Skype干扰您的设计并避免更改电话号码,解决方案是在文档中非常早地插入以下标签:

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

注意autoextractnumbers="0",这是一个技巧。由于没有属性“autoextractnumbers”,因此该标记无论如何都无法验证,但我注意到即使被注释了,它仍然可以工作:

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

就是这样!享受您的网页,不再需要混乱的插件!您的网页仍将正确验证。希望它也适用于您!我已在几台电脑上测试了3种不同的浏览器和2个不同版本的Skype,目前它对我有效,如果它对您有效,请让我知道,并分享它 :)


1
试试这个。它用一个不可见的span替换电话号码中的空格和原始的空格字符。因此,Skype无法理解它是一个号码,我们心爱的电话号码保持不变 :) 我不得不使用这种方法,因为我通常让内容管理员随意更改电话号码,因此我不能在javascript中使用硬编码号码。当然,您的标记应该像这样:<span class="phone_number">您的带有一些空格的号码<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
我在数字前的一个span中添加了一个连字符,然后将span样式设置为display:none,这样就可以实现了。
    <span class="anti-skype-hyphen">-<span>01273 200 ***

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接