【发布时间】:2015-02-18 19:39:25
【问题描述】:
Stack Overflown 在this question 中提问:
在每个 repo 上,GitHub 都有一个标记为“在桌面中克隆”的按钮 (例如:https://github.com/github/developer.github.com)。如果你有 安装了 Mac 的 GitHub,href 类似于 “github-mac://openRepo/https://github.com/github/developer.github.com”。 这将打开 GitHub for Mac 并提供克隆 repo。如果你不这样做, href 是“http://mac.github.io”。这是 GitHub 的下载页面 对于 Mac。我想在我的网站上做类似的事情:打开我的 应用程序(如果已安装)并重定向到下载(如果没有)。这怎么可能是最好的 完成了吗?
答案是关于Github Conduit,但据我所知,Github Conduit 仅适用于Github for Mac。
我有同样的问题,仅适用于 Windows 操作系统。 GitHub如何知道GitHub是否安装在计算机上?
正如deepcurious 在their answer 中所说,我们需要使用以下代码来检查协议是否已注册:
$("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://,则链接将不执行任何操作。
【问题讨论】:
-
我只是猜测,但知道自定义协议处理程序是如何工作的,也许它只是发现它的自定义协议是否被处理。如果是,它的应用程序将启动。如果没有,它会重定向。因此,您的问题归结为如何查找给定的自定义协议是否为其安装了处理程序。见stackoverflow.com/questions/24779312/…
-
我认为这可能属于WebApps。你可能会在那里获得更好的运气!
:) -
@sircapsalot WebApps 适用于应用程序的用户,而不是编写 Web 应用程序的开发人员。他的问题属于这里。
-
就我而言,这个问题与“GitHub”如何知道计算机上是否安装了客户端有关。与特定的编程问题无关。尽管无论如何这可能没有实际意义,因为他们对这个问题有公开的赏金
标签: windows macos github url-scheme github-for-windows