リンクが開くかどうかを知る必要があります。リンクが動作しているかどうかを検出するにはどうすればよいですか?
答えて
より堅牢なソリューションについては、Maximilian Hoffmann's answerを参照してください。
このようなアプローチは一般的です。タイムアウトを乗り越えて別のURLにリダイレクトします。このアプローチはあなたのために働くでしょうか?
<a id="applink" href="comgooglemaps://?q=Red+Lobster+Billings">Show map</a>
<script type="text/javascript">
var backup = "http://maps.google.com/?q=Red+Lobster+Billings";
function applink(fail){
return function() {
var clickedAt = +new Date;
setTimeout(function(){
if (+new Date - clickedAt < 2000){
window.location = fail;
}
}, 500);
};
}
document.getElementById("applink").onclick = applink(backup);
</script>
これは私が思っていることを達成できない場合はおそらく役に立ちますが、私が本当にやりたいことは、リンクがユーザーの前にアプリをインストールするかどうかを判断することですリンク上のタップ。私はおそらくこれのために働くことができるページの負荷でいくつかのjavascriptを実行すると思っています。何かご意見は?私は十分に明確であることを願っています... – novicePrgrmr
リンクが機能するかどうかを尋ねるためのインターフェイスはありません。あなたはそれを試して、結果として何が起こるか(残念ながら)しかできません。あなたはbugreport.apple.comでMobile Safari拡張リクエストを提出することができますが、これはAppleが許可していない多くのプライバシー問題にまで扉を開くだろうと思います。 –
このソリューションは、タイムアウトが発生しないようにしますか?そうであれば、それは正しい解決策です。 – novicePrgrmr
リンクが機能するかどうかを知るための方法はありませんが、それは基本的にかどうかをチェックされない何Smart App Banners
<!DOCTYPE html>
<html>
<head>
<meta name="Google Maps" content="app-id=585027354"/>
</head>
<body>
The content of the document......
</body>
</html>
と呼ばれるものでサファリのためにそこにありますアプリがインストールされています。インストールされていない場合、ユーザーはApp Storeに誘導されます。インストールされている場合、ユーザーは通常、URLスキームを使用して渡される関連データとともにウェブサイトからアプリを開くことができます。 Googleマップの場合はifを使用できます。
これは、Safariでしか動作しませんが、それでも何も改善していない点です。
解決策は、URLスキームを使用してページにiframe
を追加しています。アプリがインストールされていないと暗黙のうちに失敗するので、アプリを起動するかどうかをタイマーで確認する必要があります。
// detect iOS
if (['iPhone', 'iPad'].indexOf(navigator.platform) > -1) {
// create iframe with an Apple URL scheme
var iframe = document.createElement('iframe');
iframe.src = 'twitter://';
// hide iframe visually
iframe.width = 0;
iframe.height = 0;
iframe.frameBorder = 0;
// get timestamp before trying to open the app
var beforeSwitch = Date.now();
// schedule check if app was opened
setTimeout(function() {
// if this is called after less than 30ms
if (Date.now() - beforeSwitch < 30) {
// do something as a fallback
}
});
// add iframe to trigger opening the app
document.body.appendChild(iframe);
// directly remove it again
iframe.parentNode.removeChild(iframe);
}
私がインストールされている場合はiOSのTwitterアプリを開くには、このアプローチを使用することpost with a more detailed exampleを書きました。
これは私の答えよりも優れています。私はこれにリンクするために私の答えを更新しました。 –
- 1. オートプレフィクサーが動作しているかどうかをテストするにはどうすればよいですか?
- 2. リンクのクリックを検出するにはどうすればいいですか
- 3. アプリケーションがドキュメントベースであるかどうかを検出するにはどうすればよいですか?
- 4. デバイスがアンドロイドウェアであるかどうかを検出するにはどうすればよいですか?
- 5. スクリプトマネージャーがページにあるかどうかを検出するにはどうすればよいですか?
- 6. タッチイベントがEditText内にあるかどうかを検出するにはどうすればよいですか?
- 7. ファイルがネットワーク上にあるかどうかを検出するにはどうすればよいですか?
- 8. C#:スクリーンリーダーが動作しているかどうかを検出するには?
- 9. デバイスがルート(Android)かjailbroken(iOS)かどうかを検出するにはどうすればよいですか?
- 10. NettyサーバーがポートでリッスンしているかどうかをNettyクライアントが検出できるようにするにはどうすればいいですか?
- 11. ユーザーがスペースバーに入ったかどうかを検出するにはどうすればよいですか?
- 12. ブラウザが訪問済みのリンクを区別しているかどうかを検出するにはどうすればよいですか?
- 13. 私のアプリがBluestacks/Noxや他のエミュレータで動作しているかどうかを検出するにはどうすればいいですか?
- 14. JavaScriptリンクをHTMLリンクのように動作させるにはどうすればよいですか?
- 15. タイプがstd :: tupleかどうかを検出するにはどうすればよいですか?
- 16. ドッカーがリンクを作成するにはどうすればよいですか?
- 17. マウス/指が特定のパスに沿って移動しているかどうかを検出するにはどうすればよいですか?
- 18. C#でハードウェアデバイスが動作しているかどうかを検出する
- 19. 子アクティビティから戻ったかどうかを検出するにはどうすればよいですか?
- 20. 選択したテキストがリンクかどうかをテストするにはどうすればよいですか?
- 21. AWSラムダ環境で動作しているかどうかを検出するにはどうすればいいですか?
- 22. VideoViewで動画やバッファリングが再生されているかどうかを検出するにはどうすればよいですか?
- 23. HTML5ビデオタグで動画ファイルがサポートされているかどうかを検出するにはどうすればよいですか?
- 24. リンクが訪問されたかどうかを判断するにはどうすればよいですか?
- 25. リンクが訪問されたかどうかを確認するにはどうすればよいですか?
- 26. mnesiaのスキーマとテーブルがコードで作成されているかどうかを検出するにはどうすればよいですか?
- 27. Plesk Onyxで動作しているDockerコンテナをリンクするにはどうすればいいですか?
- 28. コンパイラオプション(アサーションなど)がONに設定されているかどうかをランタイムで検出するにはどうすればよいですか?
- 29. 再起動後にWindowsサーバーが使用可能になっているかどうかを検出するにはどうすればよいですか?
- 30. リンクを自動管理するにはどうすればよいですか?
会話はこちらhttp://stackoverflow.com/questions/13044805/how-to-check-if-an-app-is-installed-from-a-web-page-on-an-iphone – Bechir