43

在那些安装了Skype的 Windows 机器上,它倾向于将所有电话格式的号码转换为 Skype 链接,因此您可以单击它以在 Skype 上拨打电话。

问题是如何防止页面上的某个数字发生这种情况?

4

14 回答 14

45

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

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

尝试

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

它会禁用Skype

于 2010-06-13T14:02:36.380 回答
39

更新

这个答案不再准确 - 有关更多信息,请参阅Daniel Byrne 的答案


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

span.skype_pnh_container {display:none !important;}
span.skype_pnh_print_container {display:inline !important;} 
于 2011-03-30T09:31:10.513 回答
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”开头的值的类的元素进行马赫处理

于 2012-10-30T14:49:12.747 回答
13

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

于 2011-05-05T12:27:55.227 回答
13

The official solution is to add the following meta tag to the head section of your webpage. This will prevent skype from doing any reformatting on phone numbers.

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

This is a vendor-specific tag. See Skype Toolbar meta tag

于 2015-03-26T18:44:26.233 回答
5

编辑:抱歉,我刚刚发现 IE9 存在此解决方案的问题,因为它不支持软连字符。

这个问题有一个替代解决方案:

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

<span>0664 111 222 3</span>

改成

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

而且要快乐 :)

于 2012-07-27T13:26:34.090 回答
4

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

<a href="tel:+18001234567">1 800 123 4567</a>
于 2015-07-05T12:59:57.277 回答
2

我在互联网上看到了很多可能的解决方案 javascript 解决方案、元标记、css,也许我发现了一个真正适用于我的网站的 hack,我在一些计算机上进行了测试,它可以工作,我认为它会工作,直到 Skype 不改变某些东西在他们的代码中。

我正在查看我们页面上的 Skype 到底在做什么,它在电话号码周围创建了一些跨度,正如您已经说过的,但它甚至在文档末尾添加了一个标签,就在正文关闭标签之后。

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

<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 版本,现在它适用于我,让我知道它是否也适用于你,如果它有效分享它:)

于 2011-09-27T17:37:36.757 回答
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;"));
        });
    }
});
于 2011-06-22T13:42:15.977 回答
1

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

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

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

于 2012-02-11T09:50:09.620 回答
1

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

    <span class="anti-skype-hyphen">-<span>01273 200 ***
于 2012-09-06T12:09:44.933 回答
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 {...}
于 2013-06-05T07:47:49.707 回答
0

如果您在 iOS 上使用 PhoneGap,这可能是 UIWebView 问题(与 Skype 不同)。

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

self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;

在 AppDelegate.m 里面-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

于 2012-05-13T23:33:38.103 回答
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';

于 2010-06-13T14:08:47.687 回答