私は最近これと同じ問題を抱えていました。この問題は、stackoverflowやその他のあらゆる場所で発生します。'tel:'プレフィックスを非表示にして、通常のブラウザで爆発しないようにするにはどうすればよいですか。良い単一の答えはありません。
私はそれをこのようにすることになりました:
まず、メタ言語を使用して、useragent文字列に基づいてブラウザーとモバイル(php / coldfusion / perlなど)をフィルター処理します。
regular exp match for "/Android|webOS|iPhone|iPad|BlackBerry/i",CGI.HTTP_USER_AGENT
これにより、デスクトップブラウザと電話のif/else条件がわかります。
次に、私のhrefタグは次のようになります。<a class="tel" id='tel:8005551212' href=''>800-555-1212</a>
CSSを使用して、デスクトップスタイルシートの.telクラスのスタイルを設定し、デスクトップブラウザへのリンクのように見えないようにします。電話番号をクリックすることはできますが、それは明らかではなく、何もしません。
/* this is in default stylesheet, styles.css: */
.tel{
text-decoration:none;
color: #000;
cursor:default;
}
/* it should be re-styled in mobile css: */
.tel{
text-decoration: underline;
color: #0000CC;
cursor:auto;
}
最後に、モバイルリンクで少しjqueryを実行します。jQueryはa.telクラスからIDを取得し、それをhrefプロパティに挿入します。これにより、電話ユーザーはIDをクリックできるようになります。
全体は次のようになります。
<!-- get regular CSS -->
<link rel="stylesheet" href="styles/styles.css" type="text/css" media="Screen" />
<!-- get user agent in meta language. and do if/else on result.
i'm not going to write that part here, other than pseudocode: -->
if( device is mobile ) {
<!-- load mobile CSS -->
<link rel="stylesheet" href="styles/mobile.css" type="text/css" media="handheld" />
<!-- run jQuery manipulation -->
<script>
$(function(){$('a.tel').prop('href',$('a.tel').prop('id'));});
</script>
}
<p> Call us today at <a class="tel" id='tel:8005551212' href=''>800-555-1212</a>!</p>
このアプローチの1つの注意点:IDは一意である必要があります。リンクするページに重複する電話番号がある場合は、IDを名前に変更してから、jQueryを使用してそれらをループします。