服务器之家:专注于服务器技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - 手机浏览器唤起微信分享(JS)

手机浏览器唤起微信分享(JS)

2021-10-22 14:59King女王 JavaScript

这篇文章主要介绍了手机浏览器唤起微信分享功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近在做一个手机站,要求点击分享可以直接打开微信分享出去。而不是jiathis,share分享这种的点击出来二维码。在网上看了很多,都说APP能唤起微信,手机网页实现不了。也找了很多都不能直接唤起微信。

总结出来一个可以直接唤起微信的。适应手机qq浏览器和uc浏览器。

下面上代码,把这些直接放到要转发的页面里就可以了:

html部分:

?
1
2
3
4
<script src="mshare.js"></script>//引进mshare.js
<button data-mshare="0">点击弹出原生分享面板</button>
<button data-mshare="1">点击触发朋友圈分享</button>
<button data-mshare="2">点击触发发送给微信朋友</button>

js部分:

?
1
2
3
4
5
6
7
8
9
10
11
12
<script>
var mshare = new mShare({
  title: 'Lorem ipsum dolor sit.',
  url: 'http://m.ly.com',
  desc: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quaerat inventore minima voluptates.',
  img: 'http://placehold.it/150x150'
});
$('button').click(function () {
  // 1 ==> 朋友圈 2 ==> 朋友 0 ==> 直接弹出原生
  mshare.init(+$(this).data('mshare'));
});
</script>

下面是mshare.js的代码分享,把这些代码新建一个js文件放进去,然后在页面中引进就ok了。

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/**
 * 此插件主要作用是在UC和QQ两个主流浏览器
 * 上面触发微信分享到朋友圈或发送给朋友的功能
 */
'use strict';
var UA = navigator.appVersion;
 
/**
 * 是否是 UC 浏览器
 */
var uc = UA.split('UCBrowser/').length > 1 ? 1 : 0;
 
/**
 * 判断 qq 浏览器
 * 然而qq浏览器分高低版本
 * 2 代表高版本
 * 1 代表低版本
 */
var qq = UA.split('MQQBrowser/').length > 1 ? 2 : 0;
 
/**
 * 是否是微信
 */
var wx = /micromessenger/i.test(UA);
 
/**
 * 浏览器版本
 */
var qqVs = qq ? parseFloat(UA.split('MQQBrowser/')[1]) : 0;
var ucVs = uc ? parseFloat(UA.split('UCBrowser/')[1]) : 0;
 
/**
 * 获取操作系统信息 iPhone(1) Android(2)
 */
var os = (function () {
  var ua = navigator.userAgent;
 
  if (/iphone|ipod/i.test(ua)) {
    return 1;
  } else if (/android/i.test(ua)) {
    return 2;
  } else {
    return 0;
  }
}());
 
/**
 * qq浏览器下面 是否加载好了相应的api文件
 */
var qqBridgeLoaded = false;
 
// 进一步细化版本和平台判断
if ((qq && qqVs < 5.4 && os == 1) || (qq && qqVs < 5.3 && os == 1)) {
  qq = 0;
} else {
  if (qq && qqVs < 5.4 && os == 2) {
    qq = 1;
  } else {
    if (uc && ((ucVs < 10.2 && os == 1) || (ucVs < 9.7 && os == 2))) {
      uc = 0;
    }
  }
}
/**
 * qq浏览器下面 根据不同版本 加载对应的bridge
 * @method loadqqApi
 * @param {Function} cb 回调函数
 */
function loadqqApi(cb) {
  // qq == 0
  if (!qq) {
    return cb && cb();
  }
  var script = document.createElement('script');
  script.src = (+qq === 1) ? '//3gimg.qq.com/html5/js/qb.js' : '//jsapi.qq.com/get?api=app.share';
  /**
   * 需要等加载过 qq 的 bridge 脚本之后
   * 再去初始化分享组件
   */
  script.onload = function () {
    cb && cb();
  };
  document.body.appendChild(script);
}
/**
 * UC浏览器分享
 * @method ucShare
 */
function ucShare(config) {
  // ['title', 'content', 'url', 'platform', 'disablePlatform', 'source', 'htmlID']
  // 关于platform
  // ios: kWeixin || kWeixinFriend;
  // android: WechatFriends || WechatTimeline
  // uc 分享会直接使用截图
  var platform = '';
  var shareInfo = null;
  // 指定了分享类型
  if (config.type) {
    if (os == 2) {
      platform = config.type == 1 ? 'WechatTimeline' : 'WechatFriends';
    } else if (os == 1) {
      platform = config.type == 1 ? 'kWeixinFriend' : 'kWeixin';
    }
  }
  shareInfo = [config.title, config.desc, config.url, platform, '', '', ''];
  // android
  if (window.ucweb) {
    ucweb.startRequest && ucweb.startRequest('shell.page_share', shareInfo);
    return;
  }
  if (window.ucbrowser) {
    ucbrowser.web_share && ucbrowser.web_share.apply(null, shareInfo);
    return;
  }
}
/**
 * qq 浏览器分享函数
 * @method qqShare
 */
function qqShare(config) {
  var type = config.type;
  //微信好友 1, 微信朋友圈 8
  type = type ? ((type == 1) ? 8 : 1) : '';
  var share = function () {
    var shareInfo = {
      'url': config.url,
      'title': config.title,
      'description': config.desc,
      'img_url': config.img,
      'img_title': config.title,
      'to_app': type,
      'cus_txt': ''
    };
    if (window.browser) {
      browser.app && browser.app.share(shareInfo);
    } else if (window.qb) {
      qb.share && qb.share(shareInfo);
    }
  };
  if (qqBridgeLoaded) {
    share();
  } else {
    loadqqApi(share);
  }
}
/**
 * 对外暴露的接口函数
 * @method mShare
 * @param {Object} config 配置对象
 */
function mShare(config) {
  this.config = config;
  this.init = function (type) {
    if (typeof type != 'undefined') this.config.type = type;
    try {
      if (uc) {
        ucShare(this.config);
      } else if (qq && !wx) {
        qqShare(this.config);
      }
    } catch (e) {}
  }
}
// 预加载 qq bridge
loadqqApi(function () {
  qqBridgeLoaded = true;
});
if (typeof module === 'object' && module.exports) {
  module.exports = mShare;
} else {
  window.mShare = mShare;
}

好了,这样就可以直接唤起微信进行分享啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_18976087/article/details/79095735

延伸 · 阅读

精彩推荐