在那些安装了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 的上述响应不再完全准确。要正确选择页面上的所有 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”开头的值的类的元素进行马赫处理
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
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
编辑:抱歉,我刚刚发现 IE9 存在此解决方案的问题,因为它不支持软连字符。
这个问题有一个替代解决方案:
­
您可以在电话号码中使用软连字符 ( ) 来解决此问题。例如,给定数字
<span>0664 111 222 3</span>
改成
<span>0664­ 111 222 3</span>
而且要快乐 :)
我刚刚发现,如果您使用新的 HTML5 电话协议,它会阻止 Skype 垃圾的出现:
<a href="tel:+18001234567">1 800 123 4567</a>
我在互联网上看到了很多可能的解决方案 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 版本,现在它适用于我,让我知道它是否也适用于你,如果它有效分享它:)
尝试这个。它将电话号码中的空格替换为不可见的跨度 + 原始空格字符。所以 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> "));
});
}
});
我在数字的第一项中添加了一个空格。
我输入的是 (888) 222-3333 而不是 (888) 222-3333
授予:可能看起来很奇怪,但它很有效而且很简单。
我在数字前的跨度中添加了一个连字符,然后在跨度样式上设置 display:none,这很有效。
<span class="anti-skype-hyphen">-<span>01273 200 ***
您需要做的就是确保您的 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 {...}
如果您在 iOS 上使用 PhoneGap,这可能是 UIWebView 问题(与 Skype 不同)。
如果您不希望在 UIWebView 中生成自动链接,则以下行解决了该问题:
self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;
在 AppDelegate.m 里面-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
您也可以不理会该号码并使用 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';