在每个repo上,GitHub都有一个标记为“Clone in Desktop”的按钮 (例如:https://github.com/github/developer.github.com)。如果你有 安装了GitHub for Mac,href就像 “github上-MAC:// openRepo / http://mac.github.io”。 这将打开GitHub for Mac并提供克隆回购。如果你不这样做, href是“Github Conduit”。这是GitHub的下载页面 对于Mac。我想在我的网站上做类似的事情:打开我的 应用程序如果已安装,则重定向即可下载。这怎么可能是最好的 完成?
答案是关于Github for Mac,但据我所知,Github Conduit仅适用于deepcurious。
我有同样的问题,仅适用于Windows操作系统。 GitHub如何知道GitHub是否安装在计算机上?
正如their answer中{{3}}所述,我们需要使用以下代码来检查协议是否已注册:
$("a[href*='github-windows://']").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();
});
我有以下HTML链接:
<a href="github-windows://openRepo/https://github.com/jquery/api.jqueryui.com" data-href-alt="https://www.example.com/app-not-installed">Clone in Desktop</a>
如果已安装该应用,Google Chrome会向我提供外部协议请求(如下所示),因此我认为它应该可以正常工作(尽管它在我的计算机上没有任何功能)。但是,如果未安装该应用,则不会转到data-href-alt
页面。
例如,如果我在代码中的所有实例中将github-windows://
更改为some-uninstalled-app://
,则链接不执行任何操作。
答案 0 :(得分:1)
这是真的,GitHub Conduit仅适用于Mac的GitHub。那么GitHub网站如何确定是否安装了GitHub for Windows?
嗯,在这方面,GitHub for Windows显然要复杂得多。 &#34;克隆在桌面&#34;仅在您安装GitHub for Windows并使用&#34;添加帐户&#34;对您的帐户进行身份验证后才能运行选项下的按钮。
完成此操作后,只要您登录GitHub帐户,即可添加到GitHub for Windows,&#34; Clone in Desktop&#34;链接将具有github-windows://
协议,而不是https://windows.github.com/
链接。
但是如果您在未安装GitHub for Windows的计算机上登录GitHub并单击该按钮会发生什么?它有相同的链接,由于显而易见的原因不起作用。
是的,GitHub显然盲目地假设当你在Windows计算机上使用你的帐户时,你必须安装GitHub for Windows。
答案 1 :(得分:1)
您可以尝试使用JavaScript编写的跨浏览器自定义协议检测库:https://github.com/ismailhabib/custom-protocol-detection
...或者做一些hacky,比如在安装应用程序期间修改浏览器的用户代理。