Javascript 如何在网站上使交叉浏览器本机应用程序url与http url回退?

Javascript 如何在网站上使交叉浏览器本机应用程序url与http url回退?,javascript,android,html,ios,mobile,Javascript,Android,Html,Ios,Mobile,当用户点击url时,我需要打开vk.com、facebook、twitter应用程序,以防安装此应用程序 否则,应使用http url打开新选项卡 有什么现成的解决方案吗 我需要它在ios、android和windows设备上工作。这可以使用URL方案来完成。不幸的是,不同的操作系统(ios、android等)对其移动应用程序的不同URL方案做出响应。因此,首先您必须了解用户使用的设备。这可以通过使用该属性获得: var ua = window.navigator.userAgent; ua变

当用户点击url时,我需要打开vk.com、facebook、twitter应用程序,以防安装此应用程序

否则,应使用http url打开新选项卡

有什么现成的解决方案吗


我需要它在ios、android和windows设备上工作。

这可以使用URL方案来完成。不幸的是,不同的操作系统(ios、android等)对其移动应用程序的不同URL方案做出响应。因此,首先您必须了解用户使用的设备。这可以通过使用该属性获得:

var ua = window.navigator.userAgent;
ua变量是一个字符串,表示用户信息,例如他们使用的浏览器。因此,您可以使用字符串查找特定值:

var IS_IPAD = ua.match(/iPad/i) != null,
    IS_IPHONE = !IS_IPAD && ((ua.match(/iPhone/i) != null) || (ua.match(/iPod/i) != null)),
    IS_IOS = IS_IPAD || IS_IPHONE,
    IS_ANDROID = !IS_IOS && ua.match(/android/i) != null,
    IS_MOBILE = IS_IOS || IS_ANDROID;
现在您已经知道用户正在使用哪个设备,您可以使用正确的URL方案。Android使用intent://前缀,IOS使用该格式appname://parameters. 因此,您可以:

if(IS_IOS){
    window.location = "myapp://view?id=123";
}else if(IS_ANDROID){
    window.location = 'intent://view?id=123#Intent;package=my.app.id;scheme=myapp;launchFlags=268435456;end;';
}
您可能希望使用IOS超时(如果未安装应用程序,Android将带到Play Store)来查看应用程序是否已加载。如果应用程序未加载,则可以将窗口位置设置为标准URL

这解决了Android和IOS的问题,但是,它不包括Windows mobile设备。不过,我相信这是一个类似的方法。我还没有发现任何特定的库可以为您抽象和处理这些代码,但它的实现相当简单

参考资料/进一步阅读:


存在一个问题:如果未安装应用程序,Safari将显示此类自定义协议的错误。也许应用程序链接是一个解决方案,但我无法让它们工作。