H5外部浏览器直接调起微信——通过url协议 weixin:// 判断是否安装微信及启动微信

前言:

h5分享到微信,h5使用微信支付这些功能,都需要先判断是否安装微信客户端,如果已安装就启动微信,如果没有安装微信,就提示用户前去安装。

我们可以通过访问微信提供的URL协议(weixin://)来实现这个功能,代码如下:

示例代码:

复制代码
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
 6         <title>判断手机是否安装微信</title>
 7     </head>
 8     <body>
 9     <a href="javascript:testApp('weixin://')" class="dl-btn" id="download">打开微信</a> 
10     <script>
11     function testApp(url) { 
12           var timeout, t = 1000, hasApp = true; 
13           setTimeout(function () { 
14             if (!hasApp) { 
15                 //没有安装微信
16                 var r=confirm("您没有安装微信,请先安装微信!");
17                 if (r==true){
18                     location.href="http://weixin.qq.com/"
19                 }
20             }else{
21                 //安装微信
22             }
23             document.body.removeChild(ifr); 
24           }, 2000) 
25           
26           var t1 = Date.now(); 
27           var ifr = document.createElement("iframe"); 
28           ifr.setAttribute('src', url); 
29           ifr.setAttribute('style', 'display:none'); 
30           document.body.appendChild(ifr); 
31           timeout = setTimeout(function () { 
32              var t2 = Date.now(); 
33              if (!t1 || t2 - t1 < t + 100) { 
34                hasApp = false; 
35              } 
36           }, t); 
37         } 
38     </script>
39     </body>
40 </html>
复制代码

扩展:

同样,通过上边的方法,也可以判断是否安装第三方app,前提是第三方app必须提供相应的URL协议,具体参考:H5外部浏览器直接调起App

后记:

看到有博友评论,贴了一百多行php前端后端的代码,所以也就重新整理了下这篇文章。使用本文方法,关键代码也就那么二十几行,大部分浏览器都是能正常调起微信的,一般来说这已经足够了。实在是不太明白为什么前端用js就能解决的问题还要搞一大堆php前端后端管理后台的东西,作为一个前端开发来说,实现一个功能自然是代码越精简越好,前端能实现的就尽量不要劳烦后端,h5能搞定的,就无需用什么php。

posted on   逍遥云天  阅读(85501)  评论(8编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2016-06-29 HTML 字符实体
2016-06-29 html文本格式化
2016-06-29 使用css实现特殊标志或图形
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示