我有一个带有链接的 html 测试页面:
<a href="customprotocol:information-from-browser">Link.</a>
如果我在 Safari 中打开它并单击链接,则处理应用程序(自定义应用程序)会正确打开。
但是当我在谷歌浏览器中打开这个页面并点击链接时,应用打不开 .
点击的链接会触发一个 GET 请求,但它的状态是取消。整个请求在 Network Inspector 中显示为红色。
我认为 Chrome 可能出于安全原因这样做,并默认阻止未注册的自定义 URL 方案。为了解决这个问题,我在 html 页面中添加了一些 javascript(来自 this question ):
window.location.assign("customprotocol:");
这会弹出一个对话框,询问用户是否要将 customprotocol: 与应用程序关联。
即使在按下 OK 并设置 customprotocol: chrome 识别的处理程序后,该链接仍然无法启动应用程序。它仍然是一个已取消的请求。
为什么是这样?如何让它在谷歌浏览器中工作?
注 1:AFAIK,我所有的软件都更新到最新版本。
注2:取消的请求没有响应和预览信息。在计时下,请求显示为已停止。
最佳答案
通常,如果 chrome 无法识别协议(protocol),似乎协议(protocol)实际上会传递到操作系统上。所以你可能只是混淆了你的 chrome。
看看怎么样steam://browsemedia
适用于 Valve 的游戏经理 Steam。调试该链接,我敢打赌它实际上会得到与您相同的结果。试试看,mailto:me
它成功打开了我的电子邮件客户端。显然浏览器不需要发送和实际请求,所以我会忽略你所有的请求分析。我对此进行了测试,“ 已停止 ”状态为 正确 .
我认为您需要重置您在 chrome 中获得的任何自定义处理程序设置。我认为这可能会干扰让操作系统处理它。
关于google-chrome - 如何让 Google Chrome 打开自定义 URL 方案处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328340/