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

Html 禁用Lync单击呼叫检测网页中的号码,html,internet-explorer,lync,Html,Internet Explorer,Lync,有没有办法阻止Microsoft Lync检测网页中的电话号码,并在Internet Explorer中将其“点击通话”图标添加到该电话号码中 显然,客户端可以在Internet Explorer中禁用此功能,但是我想为所有访问特定网站的用户禁用此功能,因为它无法很好地处理网站上使用的嵌入式字体 要为Skype执行此操作,我将在我的网页标题中添加以下元标记: <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBL

有没有办法阻止Microsoft Lync检测网页中的电话号码,并在Internet Explorer中将其“点击通话”图标添加到该电话号码中

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

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

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

谢谢


Peter

我找到了一些选项,但没有一个比在页面中添加META标记(微软绝对应该给我们一个选项)更简单、更干净

选项1:在电话号码中插入标记 在电话号码中间添加一个空白的
SPAN
就足以摆脱Lync的检测。这是一个高度手动的选项,因为它要求您编辑页面上的每个电话号码。但它可以方便地禁用页面上的一个或两个数字,同时允许检测任何其他数字

<p>For help, please call 1-<span></span>800-555-1234.</p>
考虑到用于类名的非常独特的Guid,您可以使用自己的客户端脚本将其作为目标,并将其隐藏或执行任何操作。隐藏所有Lync图标的jQuery方法可能如下所示:

$("span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a").hide();
更新!选项#2a:设置附加标记的样式 使用与上面的脚本示例相同的技术,您可以使用CSS简单地设置不合适的锚标记的样式。这应该比基于脚本的解决方案更可取

span.baec5a81-e4d6-4674-97f3-e9220f0136c1>a{
显示:无!重要;
}

选项3:使用
TEL
anchor作为先发制人的攻击 为了与VOIP/拨号程序兼容,有一种标记电话号码的方法。它使用标准的
a
锚和
tel:
协议。这具有双重效果,不仅可以禁用Lync的侵入性标记,还可以更好地支持任何知道如何拨号的设备(Skype)和移动设备(iOS和Android)

如需帮助,请致电

现在Lync用户仍然可以单击该链接,这将提示他们使用Lync“打开”该链接,而不管他们使用的浏览器是什么(我已经确认与IE9、Firefox和Chrome兼容)。这对我来说是两全其美的:与用户的电话应用程序兼容,而不会破坏标记和布局


在微软拿出一个元标签来解决这些问题之前,我们选择了#3



更新:合并了改进CSS选项#2

我发现Lync插件似乎使用了以下正则表达式:

(\+?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})

因此,使用
&dash应阻止Lync检测数字。

我无法使选项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();
var ie=(document.all)?真:假;
函数hideClass(对象类){
//此函数将按对象类隐藏元素
//适用于基于IE和Mozilla的浏览器
var elements=(ie)?document.all:document.getElementsByTagName('*');

对于(i=0;i我建议对选项#2进行编辑,但在获得批准之前,我将继续在此处删除此选项。user2200197出现问题的原因是需要指定!重要标记,因为锚定标记指定了一个显示值,否则会覆盖它

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

我找到了一个有用的片段来删除Lync呼号。它将电话号码中的连字符替换为外观相似的字符,并且不再被识别为电话号码。

我发现选项1和3最有效。谢谢!
    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();
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
   display: none !important;
}