禁用Lync单击以呼叫网页中的检测号码

时间:2011-07-18 04:02:55

标签: html internet-explorer lync

是否有办法阻止Microsoft Lync检测网页中的电话号码,并将其点击呼叫图标添加到Internet Explorer中的该电话号码?

显然客户端可以在Internet Explorer中禁用此功能,但是我想为所有访问特定网站的人禁用此功能,因为它不能很好地使用网站上使用的嵌入字体。

要为Skype执行此操作,我会将以下元标记添加到我的网页标题中:

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

谢谢,

彼得

4 个答案:

答案 0 :(得分:16)

我找到了一些选项,但没有一个选项像向页面添加META标记那样简单或干净(Microsoft绝对应该将其作为选项提供)。

选项#1:将标记插入您的电话号码

将空白SPAN之类的内容添加到电话号码中间就足以摒弃Lync的检测。这是一个高度手动的选项,因为它要求您编辑页面上的每个电话号码。但它可以方便地禁用页面上的一个或两个数字,同时允许检测任何其他数字。

<p>For help, please call 1-<span></span>800-555-1234.</p>

选项#2:删除附加标记

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();

UPDATE!选项#2a:标记附加标记

使用与上面脚本示例相同的技术,您可以使用CSS简单地去除有问题的锚标记。这应该优于基于脚本的解决方案。

span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
   display: none !important;
}

选项#3:使用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})

因此,使用&nbsp;&dash;会阻止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();