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

时间:2010-06-13 13:43:02

标签: javascript jquery html css skype

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

问题是如何防止页面上某个号码发生这种情况?

13 个答案:

答案 0 :(得分:45)

尽量不要将数字作为单个文本输出。而不是

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

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

它将禁用Skype

答案 1 :(得分:39)

<强>更新

此答案不再准确 - 有关详细信息,请参阅Daniel Byrne's answer


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

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

答案 2 :(得分:14)

Skype已经在其span标记的末尾添加了一个随机生成的数字字符串,因此Groo的上述响应不再完全准确。要正确选择页面上的所有Skype标记,请使用CSS3通配符选择器,如:

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

^=运算符导致属性选择器到mach元素,该元素的类包含一个值为STARTS WITH'skype_pnh_container'和'skype_pnh_print_container'

答案 3 :(得分:13)

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

答案 4 :(得分:13)

官方解决方案是将以下元标记添加到网页的head部分。这将阻止Skype对电话号码进行任何重新格式化。

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

这是特定于供应商的标记。见Skype Toolbar meta tag

答案 5 :(得分:4)

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

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

答案 6 :(得分:2)

我在互联网上看到了很多可能的解决方案javascript解决方案,meta标签,css,也许我发现黑客实际上在为我的网站工作,我在一些计算机上测试过它工作,我认为它会起作用直到skype don'改变他们代码中的内容。

我正在查看skype在我们的网页上正在做什么,并且它会在电话号码周围创建一些范围,正如您已经说过的那样,但它甚至在文档末尾添加了一个标记,就在身体关闭标记之后。

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

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

这是由插件动态添加的!但这里的解决方案变得显而易见,对于finalle停止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版本,现在它适用于我,让我知道它是否也适合你,如果它可以共享它:)

答案 7 :(得分:1)

试试这个。它用不可见的范围+原始空格字符替换电话号码中的空格。所以skype无法理解它是一个数字,我们心爱的电话号码保持不变:)我不得不使用这种方法,因为我通常让内容管理员更改他的遗嘱电话号码,因此我无法使用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;"));
        });
    }
});

答案 8 :(得分:1)

我在数字的第一个字词中添加了一个空格。

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

当然:可能看起来很奇怪,但它很有效,而且很简单。

答案 9 :(得分:1)

我在数字前面的跨度中添加了一个连字符,然后在span样式上设置了display:none,这是有效的。

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

答案 10 :(得分:1)

您需要做的就是确保您的CSS选择器比Skype使用的选择器更具体。在当前的skype样式表中,他们使用:

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

您需要在此选择器中添加一个额外的类 - 您自己的网站上下文,即

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

答案 11 :(得分:0)

您也可以单独留下号码并使用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';

答案 12 :(得分:0)

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

如果您不希望在UIWebView中生成自动链接,则以下行可以解决问题:

self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

中的AppDelegate.m中