如何防止电话号码被转换为 Skype 链接?
Posted
技术标签:
【中文标题】如何防止电话号码被转换为 Skype 链接?【英文标题】:How to prevent phone numbers to be converted into Skype links? 【发布时间】:2011-03-03 05:23:06 【问题描述】:在那些安装了Skype 的 Windows 机器上,它倾向于将所有电话格式的号码转换为 Skype 链接,以便您可以单击它以在 Skype 上拨打电话。
问题是如何防止页面上的某个数字发生这种情况?
【问题讨论】:
AFAIK 它是您浏览器中的一个插件。转到扩展页面并禁用/卸载它。 不能修改设置或浏览器配置。我正在寻找一种方法来中断或绕过 Skype 转换脚本。 @ZeissS 我认为他的意思是通过使用 javascript,从而使页面禁用 Skype 的修改... 好问题。 Skype 处理的链接有点重,可能会导致空间狭窄的格式问题。禁用电话号码是一件好事吗?我想知道.... 【参考方案1】:尽量不要将数字输出为单个文本。而不是
<span>888-555-1212</span>
试试
<span>888-</span><span>555-1212</span>
它会禁用Skype
【讨论】:
@Yuval:我不是刚给你写信吗? (***.com/users/255562/ashish-gupta) @Yuval:但你看到相似之处了吗? 我用这种方法做了一个快速插件,有些人可能会觉得有用。 owenmelbz.github.com/noSkype 这仅适用于有限数量的数字。 @c_k:我不确定你的意思。我认为这里没有限制 - 例如,为什么不能将每个数字放在单独的跨度中?【参考方案2】:你也可以不理这个号码,用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';
【讨论】:
【参考方案3】:更新
此答案不再准确 - 请参阅 Daniel Byrne's answer 了解更多信息。
仅使用 CSS,可以通过覆盖 Skype 使用的样式来删除它。尝试将这两行添加到您的样式表中:
span.skype_pnh_container display:none !important;
span.skype_pnh_print_container display:inline !important;
【讨论】:
您的解决方案对我来说效果很好,感觉是正确的解决方案(而不是将电话号码分成多个跨度标签)。迷上语音对我有用!而且,优秀的名字和头像:) 感谢您的建议。不错的解决方案,但缺点是依赖于 Skype 精确生成的 CSS 元素/类名称。如果他们更改它,该站点将再次中断。 span 解决方案一定是最万无一失的,虽然不是最漂亮的。 将电话号码拆成碎片的问题在于,搜索引擎不会将它们读取为电话号码,而是将它们读取为 3 个单独的小数字,因此如果人们搜索您的公司电话号码,您的页面可能不会显示在结果中 同样,我们不应该混淆您希望客户端阅读和使用的信息——tel:
协议应该允许手机浏览器直接从浏览器发起呼叫提示,而不是费力在电话应用中复制粘贴。
什么冠军!谢谢你。【参考方案4】:
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
【讨论】:
这将是一个很好的解决方案,但如果你在 Skype 社区板上查看故障排除的长度,这可能不是一个非常安全的方法forum.skype.com/index.php?showtopic=78380【参考方案5】:试试这个。它将电话号码中的空格替换为不可见的跨度 + 原始空格字符。所以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> "));
);
);
【讨论】:
【参考方案6】:我在互联网上看到了很多可能的解决方案 javascript 解决方案、元标记、css,也许我发现了一个真正适用于我的网站的 hack,我在一些计算机上进行了测试,并且它可以工作,我认为它会工作,直到 Skype 没有' t 更改他们的代码中的某些内容。
我正在查看我们页面上的 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 版本,现在它适用于我,让我知道它是否也适用于你,如果它适用,请分享它:)
【讨论】:
【参考方案7】:我在数字的第一项添加了一个空格。
我输入的是 (888) 222-3333 而不是 (888) 222-3333
当然:可能看起来很奇怪,但它很有效而且很简单。
【讨论】:
【参考方案8】:如果您在 ios 上使用 PhoneGap,这可能是 UIWebView 问题(与 Skype 不同)。
如果您不希望在 UIWebView 中生成自动链接,则以下行修复了该问题:
self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;
在-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
中的 AppDelegate.m 内
【讨论】:
【参考方案9】:编辑:抱歉,我刚刚发现 IE9 存在此解决方案的问题,因为它不支持软连字符。
这个问题有一个替代解决方案:
您可以在电话号码中使用软连字符 (&shy;
) 来解决此问题。例如,给定数字
<span>0664 111 222 3</span>
改成
<span>0664­ 111 222 3</span>
开心就好:)
【讨论】:
【参考方案10】:我在数字前的 span 中添加了一个连字符,然后在 span 样式上设置 display:none,这很有效。
<span class="anti-skype-hyphen">-<span>01273 200 ***
【讨论】:
【参考方案11】: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”开头的值的类的元素进行处理
【讨论】:
【参考方案12】:您需要做的就是确保您的 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 ...
【讨论】:
【参考方案13】:官方的解决方案是在你网页的head部分添加如下meta标签。这将阻止 Skype 对电话号码进行任何重新格式化。
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
这是一个供应商特定的标签。见Skype Toolbar meta tag
【讨论】:
【参考方案14】:我刚刚发现,如果您使用新的 HTML5 tel 协议,它会阻止 Skype 垃圾的出现:
<a href="tel:+18001234567">1 800 123 4567</a>
【讨论】:
与上述所有答案相比,这个对我有用。以上是关于如何防止电话号码被转换为 Skype 链接?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取联系人/电话号码的“提供者”(skype/whatsapp/google)