494

HTML ドキュメントで呼び出し可能なリンクとして電話番号をマークアップしたいと考えています。私はmicroformats のアプローチを読みましたが、tel:スキームが標準になることは知っていますが、文字通りどこにも実装されていません。

私の知る限り、Skype は と を定義しておりskype:callto:後者はある程度の人気を得ています。他の会社は他のスキームを持っているか、callto:電車に飛び乗っていると思います。

電話番号をマークアップして、VoIP ソフトウェアを使用しているできるだけ多くの人がリンクをクリックして電話を受けることができるようにするためのベスト プラクティスは何でしょうか?

おまけの質問: 米国の 911 やドイツの 110 などの緊急番号の複雑さについて知っている人はいますか?

乾杯、

更新: Microsoft NetMeeting はcallto:、WinXP でスキームを使用します。この質問tel:は、Microsoft Office Communicator がスキームを処理するがスキームを処理しないことを示唆していcallto:ます。すごいぞ、レドモンド!

更新 2: 2 年半後の今。数字で何をしたいのかに煮詰まっているようです。モバイルのコンテキストでtel:は、進むべき道です。デスクトップをターゲットにするかどうかはあなた次第です。ユーザーが Skype ユーザーの方が多い ( callto:) か、Google Voice のようなものがtel:インストールされている可能性が高い ( )。私の個人的な意見は、疑わしい場合は使用することですtel:(@Sidniciousの回答に沿って)。

更新 3:ユーザー @rybo111 は、Chrome の Skype が流行に乗っていることを指摘しましたtel:。手元に両方を備えたマシンがないため、これを確認することはできませんが、それが本当であれば、最終的に勝者がここにいることを意味します:tel:

4

14 に答える 14

526

このtel:スキームは1990年代後半に使用され、 2000年初頭にRFC 2806 ( 2004年にさらに徹底したRFC 3966によって廃止されました)で文書化され、引き続き改善されています。tel:iPhoneでのサポートは恣意的な決定ではありませんでした。

callto:、Skypeでサポートされていますが、標準ではないため、 Skypeユーザーを特に対象としない限り避ける必要があります。

自分?私はtel:あなたのページに適切に形成されたURIを(ユーザーエージェントをスニッフィングせずに)含め始め、世界の他の電話が追いつくのを待ちます:)。

<a href="tel:+18475555555">1-847-555-5555</a>

于 2009-09-23T16:45:57.677 に答える
45

最善の策は、すべてのモバイルで機能する tel: から始めることです。

次に、このコードを挿入します。このコードは、デスクトップ上でリンクがクリックされた場合にのみ実行されます。

http://detectmobilebrowsers.com/を使用してモバイル ブラウザーを検出しています。お好きな方法を使用できます。

if (!jQuery.browser.mobile) {
    jQuery('body').on('click', 'a[href^="tel:"]', function() {
            jQuery(this).attr('href', 
                jQuery(this).attr('href').replace(/^tel:/, 'callto:'));
    });
}

したがって、基本的にはすべての拠点をカバーします。

tel: すべての電話で動作し、番号でダイヤラーを開きます

callto: コンピューター上で動作し、Firefox、Chrome から Skype に接続します

于 2012-06-21T17:26:56.267 に答える
22

ご想像のとおり、WebKit のサポートはtel:Android モバイル ブラウザにも拡張されています - 参考までに

于 2010-07-28T20:10:02.073 に答える
10

私はこの答えを「歴史的な」目的のために保持していますが、もうお勧めしません。上記の@Sidniciousの回答と私のアップデート2を参照してください。

calltoとtelの人たちの間の引き分けのように見えるので、あなたのコメントが私を光の道に戻すことを願って、可能な解決策を投げ入れたいと思います;-)

callto:ほとんどのデスクトップクライアントがそれを処理するため、を使用します。

<a href="callto:0123456789">call me</a>

次に、クライアントがiPhoneの場合は、リンクを置き換えます。

window.onload = function () {
  if (navigator.userAgent.match (/iPhone/i)) {
    var a = document.getElementsByTagName ("a");
    for (var i = 0; i < a.length; i++) {
      if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
        a[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
      }
    }
  }
};

このソリューションに対する異議はありますか?私はできればから始めるべきtel:ですか?

于 2009-07-22T10:02:10.777 に答える
9

Mobile Safari (iPhone & iPod Touch) はこのtel:スキームを使用します。

iPhone の Web ページから電話番号をダイヤルするにはどうすればよいですか?

于 2009-07-22T09:20:21.330 に答える
3

これは私のために働いた:

1. 標準に準拠したリンクを作成します。

        <a href="tel:1500100900">

2.skype の場合、モバイル ブラウザが検出されない場合に置き換えます。

$("a.phone")
    .each(function()
{ 
  this.href = this.href.replace(/^tel/, 
     "callto");
});

クラスを介して置換するリンクを選択する方が効率的です。もちろん、.phoneクラスを持つアンカーでのみ機能します。

if( !isMobile() ) { ...デスクトップブラウザーを検出した場合にのみトリガーされるように、関数に入れました。しかし、これはおそらく時代遅れです...

function isMobile() {
    return (
        ( navigator.userAgent.indexOf( "iPhone" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPod" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPad" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "Android" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "webOS" ) > -1 )
    );
}
于 2013-06-04T14:38:31.813 に答える
3

RFC3966は、電話番号の IETF 標準 URI、つまり「tel:」URI を定義しています。それが基準です。「callto:」を指定する同様の標準はありません。これは、サポートする URI ハンドラーを登録できるプラットフォーム上の Skype の特定の規則です。

于 2013-05-20T20:18:34.447 に答える
2

tel:は自分のプロジェクトに使用しました。

Chrome、Firefox、IE9&8、Chrome モバイル、および Sony Ericsson スマートフォンのモバイル ブラウザで動作しました。

しかしcallto:、モバイル ブラウザでは機能しませんでした。

于 2013-03-01T14:01:58.930 に答える
1

callto:は既定で Skype でサポートされており (Skype の設定で設定)、他のユーザーもサポートしているため、 ではなく を使用することをお勧めしcallto:ますskype:

于 2009-07-22T09:29:53.073 に答える
1

Appletel:は Mobile Safari のドキュメントで推奨していますが、現在 (iOS 4.3) はcallto:まったく同じものを受け入れます。したがってcallto:、Skype と iPhone の両方で動作するため、一般的な Web サイトで使用することをお勧めします。また、Android フォンでも動作すると予想されます。

更新 (2013 年 6 月)

これは、Web ページで何を提供したいかを決める問題です。Mac のデスクトップ ブラウザはリンクを使用せず、モバイル Android はリンクを使用しないため、私の Web サイトではtel:callto:リンクの両方を提供しています (後者は Skype 用とラベル付けされています) 。Google トーク プラグインを使用した Google Chrome でさえ、リンクに応答しません。それでも、誰かが自分のコンピューターでリンクを取得するのに苦労した場合に備えて、デスクトップで両方のリンクを提供することを好みます. tel:callto:tel:tel:

サイトの設計上、リンクを 1 つだけ提供するように指示されている場合は、デスクトップ ブラウザーで tel:変更しようとするリンクを使用します。callto:

于 2011-04-18T04:52:26.533 に答える
0

callto:jQuery を使用して、ページ上のすべての米国の電話番号を適切なortel:スキームに置き換えます。

// create a hidden iframe to receive failed schemes
$('body').append('<iframe name="blackhole" style="display:none"></iframe>');

// decide which scheme to use
var scheme = (navigator.userAgent.match(/mobile/gi) ? 'tel:' : 'callto:');

// replace all on the page
$('article').each(function (i, article) {
    findAndReplaceDOMText(article, {
        find:/\b(\d\d\d-\d\d\d-\d\d\d\d)\b/g,
        replace:function (portion) {
            var a = document.createElement('a');
            a.className = 'telephone';
            a.href = scheme + portion.text.replace(/\D/g, '');
            a.textContent = portion.text;
            a.target = 'blackhole';
            return a;
        }
    });
});

@jonas_jonas のアイデアに感謝します。優れたfindAndReplaceDOMText 関数が必要です。

于 2014-09-20T19:23:19.207 に答える
-1

通常の<a href="tel:+123456">12 34 56</a>マークアップを使用し、これらのリンクをデスクトップ ユーザーがクリックできないようにします。pointer-events: none;

a[href^="tel:"] {
    text-decoration: none;
}
.no-touch a[href^="tel:"] {
    pointer-events: none;
    cursor: text;
}

ポインターイベントをサポートしていないブラウザー (IE < 11) の場合、クリックは JavaScript で防止できます (例は Modernizr と jQuery に依存しています)。

if(!Modernizr.touch) {
    $(document).on('click', '[href^="tel:"]', function(e) {
        e.preventDefault();
        return false;
    });
}
于 2014-07-31T16:38:03.513 に答える