Отключить Lync Нажмите для вызова номеров обнаружения на веб-странице
Есть ли способ остановить Microsoft Lync от обнаружения номеров телефонов на веб-странице и добавить свой значок для вызова на этот номер телефона в Internet Explorer?
Очевидно, что клиент может отключить эту функцию в Internet Explorer, однако я бы хотел отключить это для всех, кто посещает определенный веб-сайт, так как он не играет хорошо со встроенными шрифтами, которые используются на веб-сайте.
Чтобы сделать это для Skype, я бы добавил в свой заголовок веб-страницы следующий метатег:
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
Спасибо,
Петр
Ответы
Ответ 1
Я нашел несколько вариантов, но ни один из них не является таким простым или чистым, как добавление тега META на страницу (который Microsoft должен предоставить нам как опцию).
Вариант №1: Вставьте разметку в свой номер телефона
Добавление чего-то вроде пустого SPAN
в середину номера телефона достаточно, чтобы сбросить обнаружение Lync. Это очень ручной вариант, так как он требует, чтобы вы редактировали каждый номер телефона на странице. Но это может быть удобно для отключения одного или двух номеров на странице, а также для обнаружения любых других.
<p>For help, please call 1-<span></span>800-555-1234.</p>
Вариант №2: Script проведите дополнительную разметку
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>
Учитывая тот уникальный Guid, который используется для имени класса, вы можете настроить его с помощью своего собственного клиента Script и скрыть его или сделать что угодно. Подход jQuery для скрыть все значки Lync может выглядеть так:
$("span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a").hide();
UPDATE! Вариант № 2a: стирайте дополнительную разметку
Используя тот же метод, что и пример Script выше, вы можете просто стирать оскорбительный тег привязки с помощью CSS. Это должно быть предпочтительнее решения на основе script.
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
Вариант № 3: использовать якорь TEL
как превентивный удар
Существует стандартизованный способ для разметки номера телефона для совместимости с 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). Это поражает меня как лучшее из обоих миров: совместимость с приложениями для телефонии пользователей, без прерывания всей разметки и макета.
Пока Microsoft не придумает тег META для решения этих проблем, мы выбрали # 3.
UPDATE: Включено предложение от @marsman57 для улучшения варианта CSS # 2
Ответ 2
Я предложил изменить вариант №2, но пока он не будет одобрен, я перейду сюда и отброшу это. Причина проблемы user2200197 заключается в том, что необходимо указать важный тег, потому что тег привязки указывает значение отображения, которое в противном случае переопределяет его.
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
Ответ 3
Я нашел следующие регулярные выражения (на этот блог), который, по-видимому, использует плагин 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})
Таким образом, использование
или ‐
должно помешать Lync обнаруживать числа.
Ответ 4
Мне не удалось заставить 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();
Ответ 5
Я нашел полезный фрагмент, чтобы удалить знак Lync Call здесь. Он заменяет дефис в номере телефона похожим персонажем, и он больше не идентифицируется как номер телефона.