最近在做一個手機站,要求點擊分享可以直接打開微信分享出去。而不是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