是否有办法阻止Microsoft Lync检测网页中的电话号码,并将其点击呼叫图标添加到Internet Explorer中的该电话号码?
显然客户端可以在Internet Explorer中禁用此功能,但是我想为所有访问特定网站的人禁用此功能,因为它不能很好地使用网站上使用的嵌入字体。
要为Skype执行此操作,我会将以下元标记添加到我的网页标题中:
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
谢谢,
彼得
答案 0 :(得分:16)
我找到了一些选项,但没有一个选项像向页面添加META标记那样简单或干净(Microsoft绝对应该将其作为选项提供)。
将空白SPAN
之类的内容添加到电话号码中间就足以摒弃Lync的检测。这是一个高度手动的选项,因为它要求您编辑页面上的每个电话号码。但它可以方便地禁用页面上的一个或两个数字,同时允许检测任何其他数字。
<p>For help, please call 1-<span></span>800-555-1234.</p>
Lync似乎以非常可预测的方式格式化电话号码。它使用(据我所知)一致的类名在数字周围包裹SPAN
,然后附加一个包含拨号图标的A
锚点。
<!-- Lync formatting -->
<p>For help, please call
<span class="baec5a81-e4d6-4674-97f3-e9220f0136c1" style="white-space: nowrap;">
1-800-555-1234
<a title="Call: 1-800-555-1234" style="...">
<img title="Call: 1-800-555-1234" src="data:image/png;base64,..."/>
</a>
</span>
.</p>
鉴于用于classname的非常独特的Guid,您可以使用自己的客户端脚本来定位它并隐藏它或做任何事情。隐藏所有Lync图标的jQuery方法可能如下所示:
$("span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a").hide();
使用与上面脚本示例相同的技术,您可以使用CSS简单地去除有问题的锚标记。这应该优于基于脚本的解决方案。
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
TEL
锚作为先发制人有standardized way标记电话号码以与VOIP /拨号程序兼容。它使用带有A
协议的标准tel:
锚点。这具有双重作用,不仅可以禁用Lync的侵入式标记,还可以为知道如何拨打号码(Skype)和移动设备(iOS和Android)的任何内容提供更好的支持。
<p>For help, please call <a href="tel:1-800-555-1234">1-800-555-1234</a>.</p>
现在,Lync用户仍然可以点击该链接,这将提示他们使用Lync“打开”它,无论他们使用哪种浏览器(我已经确认与IE9,Firefox和Chrome的兼容性)。这让我感受到了两全其美:兼容用户的电话应用程序,而不会影响您的标记和布局。
在微软提出解决这些问题的META标签之前,我们选择了#3。
更新:合并suggestion from @marsman57以改进CSS选项#2
答案 1 :(得分:4)
我建议对选项#2进行编辑,但在获得批准之前,我会继续将其放在此处。 user2200197问题的原因是需要指定!important标记,因为锚标记指定了一个覆盖它的显示值。
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
答案 2 :(得分:2)
我找到了Lync插件似乎使用的以下正则表达式(在this blog上):
(\+?1[\-\. ])?(\(\d{3}\)|\d{3})[\-\. ]?\d{3}[\-\. ]?\d{4})
((\+?1[\-\. ])?(\((800|880|888|877|866|855|844|900)\)|(800|880|888|877|866|855|844|900))[\-\.0-9A-Za-z]{7,9})
(\+\d+[\-\. ](\(\d+\)[\- ]?)?\d[\d\-\. ]+\d)
((x|X)\d{3,5})
因此,使用
或‐
会阻止Lync检测数字。
答案 3 :(得分:1)
我无法让Option 2工作。我认为这是因为加载页面加载后会触发加载项。这让我想到......如果我在页面加载5秒后触发它,那么隐藏元素。这个理论证明是成功的,但它也隐藏了电话号码。
我更进了一步,在剥去电话号码后重建了Lync Click to Call类的元素。我的步骤可能很粗糙,但有效。
var ie = (document.all) ? true : false;
function hideClass(objClass){
// This function will hide Elements by object Class
// Works with IE and Mozilla based browsers
var elements = (ie) ? document.all : document.getElementsByTagName('*');
for (i=0; i<elements.length; i++){
//Loop through the elements until it finds one with the correct class name
if (elements[i].className==objClass){
//Extract the phone number from the element
strPhone = getPhone(elements[i].innerHTML);
//Replace the element with the phone number
elements[i].outerHTML = "<SPAN class='baec5a81-e4d6-4674-97f3-e9220f0136c1'>"+strPhone+"</SPAN>"
}
}
}
function getPhone(thisStr){
newStr = "";
for (n=0; n<thisStr.length; n++){
currChar = thisStr.substr(n,1)
//Loop Through until it hits the first tag opening
if (currChar != "<"){
newStr+=currChar
}else{
break;
}
}
return newStr;
}
function viewHTML(){
alert(document.body.innerHTML)
}
function startTimer(){
// 5 Seconds after the page loads, run the
window.setTimeout(function(){hideClass('baec5a81-e4d6-4674-97f3-e9220f0136c1');},5000);
}
window.onload=startTimer();