2

そのようなリンクを条件付きで表示するために、<a href="sms:1-408-555-1212">New SMS Message</a> または そのようなURIスキームのクライアントサポートを検出するModernizrのような方法はあり ますか?<a href="whatsapp://send?text=Foo">New WhatsApp Message</a>

おそらく関連している

JavaScript で URL スキームがサポートされているかどうかを確認する

モバイル ブラウザの URL スキームをチェックする iOS の canOpenURL に似たものはありますか?

4

1 に答える 1

7

使用できるいくつかのトリックがありますが、Windows 8 より前の Windows で IE < 11 または IE 11 を処理する必要がある場合は、私の応答が気に入らないでしょう。

一般に、これらの URL をたどることに副作用がある場合、URL スキームのサポートを検出する方法はありません。

できることは、これらの URL の 1 つを iframe で開いてみることです。したがって、iframe を本文 (または必要な場所) に追加し、その href を特別な URL に設定します。

Mozilla ブラウザーでは、URL スキームがサポートされていない場合、例外が発生します。Webkit ベースのブラウザー (および Chrome) では、何も起こりません。

そのため、Mozilla を使用していない限り、実行した理由が機能したかどうかを確認する方法さえありません。

Windows 8 以降の IE11 (ただし、以前のバージョンの Windows ではありません。メソッドが欠落しているだけです) では、window.natigator.msLaunchUriその特別な URL を起動するために使用できます。URI スキームがサポートされていない場合、これもスローされます。

残念ながら、これはあなたがやりたいことを本当に阻害する可能性があります: どんなトリックを使用しても: スキームがサポートされておらず、サポートされていない IE のバージョンでそれを起動しようとするとmsLaunchUri、ページはエラーページに置き換えられ、これを防ぐ方法はありません。

私はすべてを試しました。iframe トリックにより、エラー メッセージが表示されます。試行window.openしてもエラー メッセージが表示されるか、天候によっては何も起こりません。img URL を設定してもエラーは発生しませんが (良い)、URL が実際に起動されることもありません (悪い)。

起動しようとしている URL のアプリケーションの協力がない限り (たとえば、アプリがインストールされている場合に User-Agent ヘッダーを汚染するように IE に指示するなど)、IE ではうまくいきません。

ええ - あなたが聞きたかったことではない可能性が非常に高いです、申し訳ありません.

于 2016-02-23T10:21:29.307 に答える