Javascript 已注册或未注册HTML自定义URL方案检测
例如,在我的网站中,我有一个自定义URL,可以触发已安装的应用程序Javascript 已注册或未注册HTML自定义URL方案检测,javascript,html,Javascript,Html,例如,在我的网站中,我有一个自定义URL,可以触发已安装的应用程序 <a href="customapp:12345">Click</a> 如果我的Windows应用程序已注册URL方案,Chrome会提示用户打开它 问题是,如果应用程序未注册,是否有办法让我找到它并提示用户安装 非常感谢。我发现,如果您尝试打开scheme链接并安装了处理程序,则会调用window.onblur。这是因为它要么打开已注册的应用程序,要么打开一个询问您是否要打开应用程序的框,这两个框
<a href="customapp:12345">Click</a>
如果我的Windows应用程序已注册URL方案,Chrome会提示用户打开它
问题是,如果应用程序未注册,是否有办法让我找到它并提示用户安装
非常感谢。我发现,如果您尝试打开scheme链接并安装了处理程序,则会调用
window.onblur
。这是因为它要么打开已注册的应用程序,要么打开一个询问您是否要打开应用程序的框,这两个框都占据了焦点。如果没有安装,焦点将保持在原来的位置
这对我来说在Windows10/Chrome、macOS/Chrome、android/Chrome、android/Silk和Linux/Firefox上都很有效
调用
tryScheme(“您的cheme://blahblah“,函数(){我发现,如果您试图打开scheme链接并安装了处理程序,则会调用window.onblur
。这是因为它会打开已注册的应用程序,或者打开一个框,询问您是否要打开应用程序,这两个应用程序都会占据焦点。如果未安装,则焦点会保持在原来的位置
这对我来说在Windows10/Chrome、macOS/Chrome、android/Chrome、android/Silk和Linux/Firefox上都很有效
调用tryScheme(“您的cheme://blahblah,function(){仅作为“下载然后打开”类型的情况。您不能从浏览器中启动操作系统进程。我不想启动它,我想知道该方案是否已注册。您希望如何“知道该方案是否已注册”如果方案注册是操作系统级功能?可能通过使用(启动)某种操作系统级工具。嗯,仍然无法从浏览器内部启动操作系统级工具。我不知道,这就是为什么我要问,是否有Javascript功能可以帮上忙。浏览器中没有允许这样做的Javascript功能。(无法启动操作系统级工具)。答案仍然是“否”。这只是一种“先下载后打开”的情况。您无法从浏览器中启动操作系统进程。我不想启动它,我想知道该方案是否已注册。您希望如何“知道该方案是否已注册”如果方案注册是操作系统级功能?可能通过使用(启动)某种操作系统级工具。嗯,仍然无法从浏览器内部启动操作系统级工具。我不知道,这就是为什么我要问,是否有Javascript功能可以帮上忙。浏览器中没有允许这样做的Javascript功能。(无法启动操作系统级工具)。答案仍然是否。
var blurred = false;
window.onblur = function() {
blurred = true;
}
function tryScheme(url, fallbackFunction) {
blurred = false;
document.location = url;
// If we haven't lost focus in a fairly short time, call it as not installed.
setTimeout(function(){
if (blurred === true) {
console.log("Focus away from page - the scheme's probably installed");
return;
}
console.log("Still on page - the scheme's probably not installed");
fallbackFunction();
}, 1000);
}