我正在开发一个网站。在我的网站中,我创建了一些应用程序和链接到这些应用程序的按钮。用户单击该按钮后,将提示用户安装该应用程序。
我的问题是:
如果用户没有在他们的PC中安装应用程序,那么一旦他们点击按钮,他们将被提示在他们的PC中安装应用程序;但如果他们已经在他们的PC上安装了应用程序,则应用程序应该拒绝或警告用户已经安装了相同的应用程序。
那么,我应该如何编写代码来检测或检查应用程序是否已经安装到用户的PC中?
答案 0 :(得分:1)
您有几个选择
Mime类型
在大多数浏览器(不是IE)上,您可以看到已定义的mime处理程序,例如application / foo。然后,您可以遍历navigator.mimeTypes
,看看它是否存在。它不是一个数组(严格意义上的),所以你需要转换它。
var mimes = Array.prototype.slice.call(navigator.mimeTypes)
if (mimes.length && mimes.indexOf("application/foo") !== -1) {
// we've got it!
}
else {
// we're on IE and/or the app isn't installed
}
扩展/扩展中心
除了应用程序的正常行为外,它还可以在用户的浏览器中安装一个非常简单的小扩展程序。该扩展程序将实现一个内容脚本,该脚本仅在您的网站上处于活动状态,并使用“运行”按钮替换“下载”按钮。可能有点矫枉过正,并且会惹恼用户。
注册 custom:// uri
自定义URI允许您使用此neat trick。如果您的应用未安装,则无法重定向,并且将加载downloadURL。例如,如果您安装了iTunes,请尝试将appurl更改为itunes://foobar
。
var appurl = 'myapp://launch';
var downloadURL = '/installer.exe';
var timeout;
function preventPopup() {
clearTimeout(timeout);
timeout = null;
window.removeEventListener('pagehide', preventPopup);
}
function startApp() {
document.location = appurl;
timeout = setTimeout(function () {
location.href = downloadURL;
}, 1000);
window.addEventListener('pagehide', preventPopup);
}
startApp();
这可能是最好的解决方案。