Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 已注册或未注册HTML自定义URL方案检测_Javascript_Html - Fatal编程技术网

Javascript 已注册或未注册HTML自定义URL方案检测

Javascript 已注册或未注册HTML自定义URL方案检测,javascript,html,Javascript,Html,例如,在我的网站中,我有一个自定义URL,可以触发已安装的应用程序 <a href="customapp:12345">Click</a> 如果我的Windows应用程序已注册URL方案,Chrome会提示用户打开它 问题是,如果应用程序未注册,是否有办法让我找到它并提示用户安装 非常感谢。我发现,如果您尝试打开scheme链接并安装了处理程序,则会调用window.onblur。这是因为它要么打开已注册的应用程序,要么打开一个询问您是否要打开应用程序的框,这两个框

例如,在我的网站中,我有一个自定义URL,可以触发已安装的应用程序

<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);
}