如何防止电话号码转换成Skype链接?
在安装了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的响应不再是完全准确的。 要正确select页面上的所有Skype标签,请使用如下的CSS3通配符select器:
span[class^='skype_pnh_container'] {display:none !important;} span[class^='skype_pnh_print_container'] {display:inline !important;}
^=
运算符使属性select器对具有包含值为STARTS WITH'skype_pnh_container'和'skype_pnh_print_container'的类的元素进行加工,
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
官方的解决scheme是将以下元标记添加到您的网页的头部分。 这将阻止Skype的电话号码重新格式化。
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
编辑:对不起,我刚刚发现IE9有这个解决scheme的问题,因为它不支持软连字符。
有一个替代解决scheme来解决这个问题:
您可以在电话号码内使用软连字符( ­
)来解决问题。 例如,给定的数字
<span>0664 111 222 3</span>
改成
<span>0664­ 111 222 3</span>
而且要快乐 :)
我刚刚发现,如果您使用新的HTML5 tel协议,它会阻止Skype垃圾出现:
<a href="tel:+18001234567">1 800 123 4567</a>
我看到了interweb很多可能的解决scheme的JavaScript解决scheme,meta标签,CSS,也许我发现一个实际上为我的网站工作的黑客,我在一些电脑上testing,它工作,我认为这将工作,直到Skype不改变在他们的代码。
我正在寻找什么是在我们的网页上正在做的Skype,它创造了一些跨越电话号码,正如你已经说过的,但它甚至添加一个标签在文档的后面,身体closures标签后。
在这里我看到了这个诀窍! 在该对象之前有一个configuration标签:
<span id="skype_highlighting_settings" display="none" autoextractnumbers="1"></span>
这是由插件dynamic添加的! 但这里的解决scheme变得明显,为了避免Skype与您的devise搞乱,并避免更改电话号码解决scheme是在文档中很早插入以下标签:
<span id="skype_highlighting_settings" display="none" autoextractnumbers="0"></span>
注意autoextractnumbers =“0”,这里是诀窍。 该文件将不会validation该标签,因为没有属性“autoextractnumbers”,但我注意到,即使注释它工作:
<!-- <span id="skype_highlighting_settings" display="none" autoextractnumbers="0"></span> -->
而就是这样! 享受你的网页免费杂乱的插件! 而你的网页仍然会正确validation。 希望它也适用于你! 我已经testing了几台计算机3个不同的浏览器和2个不同的Skype版本,现在它适用于我,让我知道,如果它也适用于你,如果它的作品分享:)
我在号码的第一项中增加了一个空格。
而不是(888)222-3333我进入(888)222-3333
授予:可能看起来不可思议,但它的工作原理很简单。
我在数字前的一个范围中添加了一个连字符,然后在span style中设置了display:none。
<span class="anti-skype-hyphen">-<span>01273 200 ***
所有你需要做的是确保你的CSSselect器比Skypeselect器更具体。 在他们使用的当前的Skype样式表中:
span.skype_pnh_container span.skype_pnh_highlighting_inactive_common span.skype_pnh_text_span {...}
你将需要添加一个额外的类 – 你自己的网站上下文 – 这个select器,即
.myclass span.skype_pnh_container span.skype_pnh_highlighting_inactive_common span.skype_pnh_text_span {...}
尝试这个。 它用一个不可见的跨度+原始空格字符replace电话号码中的空格。 因此,Skype不能理解它是一个数字,我们心爱的电话号码保持不变:)我不得不使用这种方法,因为我通常让内容pipe理员改变他的意愿电话号码,因此我不能在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> ")); }); } });
你也可以离开这个号码,并用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';
如果您在iOS上使用PhoneGap,则可能是UIWebView问题(与Skype分开)。
如果您不想在UIWebView中生成自动链接,则以下行修复了这个问题:
self.viewController.webView.dataDetectorTypes = UIDataDetectorTypeNone;
在-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
AppDelegate.m中-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions