36

ユーザーがカスタム プロトコルのリンクをクリックしたとき ( などmyapp://superlink)

アプリを起動するか、ユーザーが構成アプリをダウンロードして実行できるようにする必要があります

カスタムプロトコルが登録されているかどうかを確認するクロスブラウザーの方法を探しています

ユーザーエージェントサーバー側(IEの場合)をチェックして、これを判断しようとしました

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform] "myapp"=""

送信します

`....NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; **myapp**`

ユーザーエージェントとして

これは良い、クリーンな方法、簡単な設定です:

.regファイルをダウンロードして実行するか、ms Windowsポリシーを介して伝播するだけです

Chrome と Firefox ではこれを修正できません

クライアント側のソリューション (js) はありますか?

私の環境:IE8+、Chrome(最新)、Firefox(最新)

4

6 に答える 6

26

いつも失敗しないという古いトリックがあります。

必要なコア機能はsetTimeout. 詳しくお話しします:

setTimeout(function() {
  window.location = "http://itunes.com/app/yourapplocation";
}, 200);

// once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in
window.location = "myapp://superlink";

今、あなたはそれがおそらくリンクまたはリンクであると述べたので、私はあなたの便宜のためにこの素晴らしい関数を作りました:

HTML コード

<a href="myapp://superlink" data-href-alt="http://itunes.com/app/yourapplocation">Click here</a>

JS コード

$("a[href*='myapp://']").click(function(e)
{
  var el = $(this);
  setTimeout(function() {
    window.location = el.data("data-href-alt");
  }, 200);

  // once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in
  window.location = el.data("href");

  e.preventDefault();
});

これがあなたを助けることを願っています:)

于 2014-08-29T02:21:08.313 に答える
9

コロロの解決策は何らかの理由でうまくいかなかったので、代わりにこのわずかに変更された解決策で管理しました。

<html>
<a id="link">Click Me</a>
<script>
var link = document.getElementById('link');
var timeout;
window.addEventListener('blur',function(e){
    window.clearTimeout(timeout);
})

link.addEventListener('click', function(e) { 

    timeout = window.setTimeout(function() {
      console.log('timeout');
      window.location = "https://myapp.net";
    }, 1000);

    window.location = "myapp://";
    e.preventDefault();
});
</script>
</html>
于 2015-09-02T16:40:32.690 に答える
4

2020 年 2 月現在、これを行うための有効な方法はないようです。Chrome のみを考慮すると、@kororo または @habsq のソリューションは現時点では機能しません。その理由は、URL プロトコル ハンドラが存在するかどうかを確認することによって達成しようとしていることが、一部の人々によって実際にはセキュリティ リスクであると見なされているためです。

したがって、私のアドバイスは、これを機能させようとすることに固執しないことです。

この作業を行う場合の最良のシナリオは、一部のブラウザーが URL プロトコルをチェックする方法を「ハッキング」できるメカニズムを削除するまで成功し、その後再び振り出しに戻ることです。

ここでのより簡単な方法は、非常に大規模なサイトでさえ行うことであり、ページに次のような JavaScript を記述します。

window.location = "myprotocol://asdf";

これは機能するかどうかのどちらかであり、「これが機能しない場合は、そのようなリンクでソフトウェアをダウンロードしてください」という行に沿って何かを言うメッセージをページに表示します。

于 2021-02-14T23:21:38.917 に答える