Microsoft LyncがWebページで電話番号を検出し、Internet Explorerでその電話番号にClick-to-Callアイコンを追加するのを防ぐ方法はありますか?
明らかに、クライアントはInternet Explorerでこの機能を無効にできますが、特定のWebサイトにアクセスするすべての人に対してこれを無効にします。これは、Webサイトで使用されている埋め込みフォントでうまく機能しないためです。
Skypeでこれを行うには、次のメタタグをWebページのヘッダーに追加します。
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
ありがとう、
ピーター
いくつかのオプションを見つけましたが、ページにMETAタグを追加するほど単純でクリーンなものはありません(Microsoftがオプションとして絶対に提供する必要があります)。
電話番号の途中に空白のSPAN
のようなものを追加するだけで、Lyncの検出を無効にすることができます。これは、ページ上のすべての電話番号を編集する必要があるため、非常に手動のオプションです。ただし、ページ上の1つまたは2つの番号を無効にし、他の番号を検出できるようにする場合は便利です。
<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>
クラス名に使用される非常に一意のGuidを考えると、独自のクライアントスクリプトでそれをターゲットにして、非表示にするか、何でもすることができます。すべてのLyncアイコンを非表示にするjQueryアプローチは次のようになります。
$("span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a").hide();
上記のスクリプト例と同じ手法を使用すると、CSSを使用して問題のあるアンカータグのスタイルを簡単に設定できます。これは、スクリプトベースのソリューションよりも望ましいはずです。
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
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:CSSオプション#2の改善のために @ marsman57からの提案 を組み込みました
オプション#2の編集を提案しましたが、承認されるまで、ここにドロップします。 user2200197の問題の理由は、アンカータグが表示値を指定しているため、!importantタグを指定する必要があるためです。
span.baec5a81-e4d6-4674-97f3-e9220f0136c1 > a {
display: none !important;
}
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が番号を検出できなくなります。
オプション2を機能させることができませんでした。これは、ページが読み込まれた後にアドオンがトリガーされるためだと思います。それで私は考えました...ページの読み込みから5秒後にこれをトリガーした場合は、要素を非表示にします。この理論は成功したことが証明されましたが、電話番号も隠されていました。
さらに一歩進んで、電話番号を削除した後、Lync Click toCallクラスの要素を再構築しました。私の手順は大雑把かもしれませんが、効果的です。
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();
Lyncコールサインを削除するための便利なスニペットを見つけました ここ 。電話番号のハイフンが似たような文字に置き換えられ、電話番号として識別されなくなります。