iPhone の Safariは連続する数字が勝手に電話番号のリンクになってしまいます。
電話番号や郵便番号(123-4567)のようなハイフン区切りだけでなく、
小数点(123.4567)のようにドット区切りの数値までも電話番号リンクになります。
これでは困るので対処方法をまとめました。
(iPhone 4, iPhone 4sで動作確認)
目次:
- 1.iPhone 版 Safari用の対策
- 2.Safari以外のアプリ用の対策
- 3.修正できないアプリ用の対策
1.iPhone 版 Safari用の対策
公式な対処方法は、Apple URL Scheme Referenceに書いてあるメタタグをHTMLヘッダ内に指定すると、明示しない限り電話番号としてリンクしなくなります。
<meta name = "format-detection" content = "telephone=no">
2.Safari以外のアプリ用の対策
メタタグを埋め込んで、iPhone 版 Safariで確認して消えていたのでこれで解決、と思ったのですが甘かった。どうやらSafari以外のアプリだとこのメタタグを無視するようで、これだけだとSafari以外からページを開くと相変わらずの電話番号リンクになります。
これはアプリ側のWebViewの設定が原因で、電話番号検出を無効化するにはアプリ実装時に下記コードで電話番号を検出しないよう設定する必要があります。
self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
ちなみに Titanium Mobile の場合はこちらを参考に、createWebViewの指定でautoDetectを空にしてやるといいとの事です。
// 電話番号が自動リンクされないWebView win.add( Ti.UI.createWebView({ top : 10, height : 200, width : 300, autoDetect : [],// ←ここがポイント! url : "wv2.html" }) );
3.修正できないアプリ用の対策
また、既成のアプリなどどうしてもアプリ側を変更できない場合、ややトリッキーですが下記の方法を使えばHTMLだけでもWebViewの電話番号認識を止める事が可能です。
- 数字の間に<img width=”0″ height=”0″ />を挟む。
1234<img width="0" height="0" />5678
- <input type=”text” />タグに入れる。
<input style="border: none;" type="text" value="3105551212" readonly="readonly" />
個々のアプリの問題ですので現実的には1,2の対応までで留めるべきですが、
こういう方法を知っておくと役立つ事もあるでしょう。
参考
- Titanium MobileのWebViewで電話番号・郵便番号の自動リンクを抑制する方法
- How to disable phone number linking in Mobile Safari?(StackOverflow)