123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- /**
- * 微信网页端调用JS
- * @author dodge
- * @contact dodgepudding@gmail.com
- * @link http://blog.4wer.com/wechat-timeline-share
- * @version 1.1
- *
- * 自定义分享使用:
- * WeixinJS.hideOptionMenu() 隐藏右上角按钮
- * WeixinJS.showOptionMenu() 显示右上角按钮
- * WeixinJS.hideToolbar() 隐藏工具栏
- * WeixinJS.showToolbar() 显示工具栏
- * WeixinJS.getNetworkType() 获取网络状态
- * WeixinJS.closeWindow() 关闭窗口
- * WeixinJS.scanQRCode() 扫描二维码
- * WeixinJS.openUrlByExtBrowser(url) 使用浏览器打开网址
- * WeixinJS.jumpToBizProfile(username) 跳转到指定公众账号页面
- * WeixinJS.sendEmail(title,content) 发送邮件
- * WeixinJS.openProductView(latitude,longitude,name,address,scale,infoUrl) 查看地图
- * WeixinJS.addContact(username) 添加微信账号
- * WeixinJS.imagePreview(urls,current) 调出微信内图片预览
- * WeixinJS.payCallback(appId,package,timeStamp,nonceStr,signType,paySign,callback) 微信JsApi支付接口
- * WeixinJS.editAddress(appId,addrSign,timeStamp,nonceStr,callback) 微信JsApi支付接口
- * 自定义分享内容数据格式:
- * var dataForWeixin={
- appId:"",
- MsgImg:"消息图片路径",
- TLImg:"时间线图路径",
- url:"分享url路径",
- title:"标题",
- desc:"描述",
- fakeid:"",
- prepare:function(argv){
- if (typeof argv.shareTo!='undefined')
- switch(argv.shareTo) {
- case 'friend':
- //发送给朋友
- alert(argv.scene); //friend
- break;
- case 'timeline':
- //发送给朋友
- break;
- case 'weibo':
- //发送到微博
- alert(argv.url);
- break;
- case 'favorite':
- //收藏
- alert(argv.scene);//favorite
- break;
- case 'connector':
- //分享到第三方应用
- alert(argv.scene);//connector
- break;
- default:
- }
- },
- callback:function(res){
- //发送给好友或应用
- if (res.err_msg=='send_app_msg:confirm') {
- //todo:func1();
- alert(res.err_desc);
- }
- if (res.err_msg=='send_app_msg:cancel') {
- //todo:func2();
- alert(res.err_desc);
- }
- //分享到朋友圈
- if (res.err_msg=='share_timeline:ok') {
- //todo:func1();
- alert(res.err_desc);
- }
- if (res.err_msg=='share_timeline:cancel') {
- //todo:func1();
- alert(res.err_desc);
- }
- //分享到微博
- if (res.err_msg=='share_weibo:confirm') {
- //todo:func1();
- alert(res.err_desc);
- }
- if (res.err_msg=='share_weibo:cancel') {
- //todo:func1();
- alert(res.err_desc);
- }
- //收藏或分享到应用
- if (res.err_msg=='send_app_msg:ok') {
- //todo:func1();
- alert(res.err_desc);
- }
- }
- };
- */
- WeixinJS = typeof WeixinJS!='undefined' || {};
- //隐藏右上角按钮
- WeixinJS.hideOptionMenu = function() {
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.call('hideOptionMenu');
- });
- };
- //显示右上角按钮
- WeixinJS.showOptionMenu = function() {
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.call('showOptionMenu');
- });
- };
- //隐藏底部导航栏
- WeixinJS.hideToolbar = function() {
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.call('hideToolbar');
- });
- };
- //显示底部导航栏
- WeixinJS.showToolbar = function() {
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.call('showToolbar');
- });
- };
- //网页获取用户网络状态
- netType={"network_type:wifi":"wifi网络","network_type:edge":"非wifi,包含3G/2G","network_type:fail":"网络断开连接","network_type:wwan":"2g或者3g"};
- WeixinJS.getNetworkType = function(callback) {
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke('getNetworkType',{},
- function(res){
- //result: network_type:wifi,network_type:edge,network_type:fail,network_type:wwan
- //netType[e.err_msg]
- callback(res.err_msg);
- });
- });
- };
- //关闭窗口
- WeixinJS.closeWindow = function() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("closeWindow", {});
- };
- //扫描二维码
- WeixinJS.scanQRCode = function() {
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("scanQRCode", {});
- };
- //使用浏览器打开网址
- WeixinJS.openUrlByExtBrowser=function(url){
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("openUrlByExtBrowser",{"url" : url});
- };
- //跳转到指定公众账号页面
- WeixinJS.jumpToBizProfile=function(username){
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("jumpToBizProfile",{"tousername" : username});
- };
- //发送邮件
- WeixinJS.sendEmail=function(title,content){
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("sendEmail",{
- "title" : title,
- "content" : content
- });
- };
- //查看地图
- WeixinJS.openProductView=function(latitude,longitude,name,address,scale,infoUrl){
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("openProductView",{
- "latitude" : latitude, //纬度
- "longitude" : longitude, //经度
- "name" : name, //名称
- "address" : address, //地址
- "scale" : scale, //地图缩放级别
- "infoUrl" : infoUrl, //查看位置界面底部的超链接
- });
- };
- //添加微信账号
- WeixinJS.addContact=function weixinAddContact(username){
- if (typeof WeixinJSBridge!='undefined') WeixinJSBridge.invoke("addContact", {
- "webtype": "1",
- "username": username
- }, function(e) {
- WeixinJSBridge.log(e.err_msg);
- //e.err_msg:add_contact:added 已经添加
- //e.err_msg:add_contact:cancel 取消添加
- //e.err_msg:add_contact:ok 添加成功
- if(e.err_msg == 'add_contact:added' || e.err_msg == 'add_contact:ok'){
- //关注成功,或者已经关注过
- }
- });
- };
- /**
- * 调出微信内图片预览scrollview
- * @param array urls 图片url数组
- * @param string current 当前图片url
- */
- WeixinJS.imagePreview = function(urls,current) {
- if (typeof WeixinJSBridge!='undefined')
- WeixinJSBridge.invoke("imagePreview", {
- current: current,
- urls: urls
- });
- };
- //微信JsApi支付接口
- WeixinJS.payCallback = function(appId,package,timeStamp,nonceStr,signType,paySign,callback){
- if (typeof WeixinJSBridge!='undefined')
- WeixinJSBridge.invoke('getBrandWCPayRequest',{
- "appId" : appId.toString(),
- "timeStamp" : timeStamp.toString(),
- "nonceStr" : nonceStr.toString(),
- "package" : package.toString(),
- "signType" : signType.toString(),
- "paySign" : paySign.toString()
-
- },function(res){
- // res.err_msg == "get_brand_wcpay_request:ok" return true;
- // res.err_msg == "get_brand_wcpay_request:cancel" return false;
- callback(res);
- });
- };
- //编辑收货地址
- WeixinJS.editAddress = function(appId,addrSign,timeStamp,nonceStr,callback){
- var postdata = {
- "appId" : appId.toString(),
- "scope" : "jsapi_address",
- "signType" : "sha1",
- "addrSign" : addrSign.toString(),
- "timeStamp" : timeStamp.toString(),
- "nonceStr" : nonceStr.toString()
- };
- if (typeof WeixinJSBridge!='undefined')
- WeixinJSBridge.invoke('editAddress',postdata, function(res){
- //return res.proviceFirstStageName,res.addressCitySecondStageName,res.addressCountiesThirdStageName,res.addressDetailInfo,res.userName,res.addressPostalCode,res.telNumber
- //error return res.err_msg
- callback(res);
- });
- };
- (function(){
- if (typeof dataForWeixin=="undefined") return;
- var onBridgeReady=function(){
- WeixinJSBridge.on('menu:share:appmessage', function(argv){
- (dataForWeixin.prepare)(argv);
- WeixinJSBridge.invoke('sendAppMessage',{
- "appid":dataForWeixin.appId,
- "img_url":dataForWeixin.MsgImg,
- "img_width":"120",
- "img_height":"120",
- "link":dataForWeixin.url,
- "desc":dataForWeixin.desc,
- "title":dataForWeixin.title
- }, function(res){(dataForWeixin.callback)(res);});
- });
- WeixinJSBridge.on('menu:share:timeline', function(argv){
- (dataForWeixin.prepare)(argv);
- WeixinJSBridge.invoke('shareTimeline',{
- "img_url":dataForWeixin.TLImg,
- "img_width":"120",
- "img_height":"120",
- "link":dataForWeixin.url,
- "desc":dataForWeixin.desc,
- "title":dataForWeixin.title
- }, function(res){(dataForWeixin.callback)(res);});
- });
- WeixinJSBridge.on('menu:share:weibo', function(argv){
- (dataForWeixin.prepare)(argv);
- WeixinJSBridge.invoke('shareWeibo',{
- "content":dataForWeixin.title,
- "url":dataForWeixin.url
- }, function(res){(dataForWeixin.callback)(res);});
- });
- WeixinJSBridge.on('menu:share:facebook', function(argv){
- (dataForWeixin.prepare)(argv);
- WeixinJSBridge.invoke('shareFB',{
- "img_url":dataForWeixin.TLImg,
- "img_width":"120",
- "img_height":"120",
- "link":dataForWeixin.url,
- "desc":dataForWeixin.desc,
- "title":dataForWeixin.title
- }, function(res){(dataForWeixin.callback)(res);});
- });
- };
- if(document.addEventListener){
- document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
- }else if(document.attachEvent){
- document.attachEvent('WeixinJSBridgeReady' , onBridgeReady);
- document.attachEvent('onWeixinJSBridgeReady' , onBridgeReady);
- }
- })();
|