<分区>
我正在开发一个网站。在我的网站上,我创建了一些应用程序和链接到这些应用程序的按钮。一旦用户单击该按钮,系统将提示用户安装该应用程序。
我的问题是:
如果用户没有在他们的 PC 上安装应用程序,那么当他们点击按钮时会提示他们在他们的 PC 上安装应用程序;但如果他们已经在他们的 PC 上安装了应用程序,应用程序应该拒绝或警告用户已经安装了相同的应用程序。
那么,我应该如何编写代码来检测或检查应用程序是否已经安装到用户的PC中呢?
标签 php javascript jquery
<分区>
我正在开发一个网站。在我的网站上,我创建了一些应用程序和链接到这些应用程序的按钮。一旦用户单击该按钮,系统将提示用户安装该应用程序。
我的问题是:
如果用户没有在他们的 PC 上安装应用程序,那么当他们点击按钮时会提示他们在他们的 PC 上安装应用程序;但如果他们已经在他们的 PC 上安装了应用程序,应用程序应该拒绝或警告用户已经安装了相同的应用程序。
那么,我应该如何编写代码来检测或检查应用程序是否已经安装到用户的PC中呢?
最佳答案
你有几个选择
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
}
扩展/插件
除了您的应用程序的正常行为外,它还可以在用户的浏览器中安装一个非常简单的小型扩展程序。该扩展程序将实现一个仅在您的网站上有效的内容脚本,并将“下载”按钮替换为“运行”按钮。可能有点矫枉过正,惹恼了用户。
注册一个自定义://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();
这可能是最好的解决方案。
关于php - 检测或检查 PC 中安装的现有应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18456396/
相关文章:
javascript - 只从mysql数据库中获取最后一条记录
php - mod_rewrite 不适用于 jQuery.ajax
javascript - CSS 将一个 div 直接放在另一个之上
javascript - 未捕获的类型错误 : $rootScope. $on 不是连接工厂中的函数
php - 如何定位Azure MySQL数据库连接字符串?
PHP + MySQL - 有什么替代方法来处理(小)时间序列?
javascript - 单击链接转到包含嵌入内容的页面时,嵌入不显示
jquery - 如何使用选择器返回 jQuery 对象数组