移动端html页面分享
开发APP应用比开发移动端网页挑战小,因为APP应用只需要适配不同手机即可,而移动端网页不仅需要适配不同手机,还要适配同一部手机的不同浏览器。
移动端页面分享是一个常用的功能,需要宿主环境,可以是某APP应用,也可以是微信,还可以是浏览器。
如果html页面内嵌APP应用或者微信,想实现分享功能,需要在按钮元素上加代码,要么调用APP方法或协议,要么调用微信API;如果html页面直接在浏览器打开,网页前端不用额外做分享功能,因为浏览器自带分享。
站在网页前端的角度,下面具体介绍一下微信分享和APP分享及浏览器分享。
一、微信分享
说明:移动端html页面嵌入微信,调用微信分享功能。
官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
1、封装js
require.async('/static/common/wxShare/jweixin-1.0.0.js', function() {
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:wxParamObj.appId , // 必填,公众号的唯一标识
timestamp:wxParamObj.timestamp , // 必填,生成签名的时间戳
nonceStr:wxParamObj.nonceStr, // 必填,生成签名的随机串
signature:wxParamObj.signature,// 必填,签名
jsApiList: [
"onMenuShareAppMessage",
"onMenuShareTimeline"
] // 必填,需要使用的JS接口列表
});
wx.ready(function(){
/**
* config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
* config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
* 则须把相关接口放在ready函数中调用来确保正确执行。
*/
// 分享到朋友圈
wx.onMenuShareTimeline({
title: wxParamObj.title ,//分享标题
link: wxParamObj.link, //分享链接
imgUrl: wxParamObj.imgUrl ,//分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//分享给朋友
wx.onMenuShareAppMessage({
title: wxParamObj.title, // 分享标题
desc: wxParamObj.desc, // 分享描述
link: wxParamObj.link, // 分享链接
imgUrl: wxParamObj.imgUrl, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '',// 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
});
});
2、传参数
var wxParamObj = {//定义全局变量
debug: "<?php echo $debug;?>",
appId: "<?php echo $appId;?>",
timestamp: "<?php echo $timestamp;?>",
nonceStr: "<?php echo $nonceStr;?>",
signature: "<?php echo $signature;?>",
title: "<?php echo $title;?>",
desc: "<?php echo $desc;?>",
link: "<?php echo $link;?>",
imgUrl: "<?php echo $imgUrl;?>"
}
分享的按钮是微信原生页面的元素,网页前端只管传参数,微信APP那边监听点击事件。
二、APP分享
说明:移动端html页面嵌入APP,调用APP原生的分享功能。
场景1:
分享的按钮是APP原生页面的元素。网页前端传参数调APP自定义的方法,APP前端监听点击事件,弹出分享框。html页面初始化时,下面的代码执行。
var wxParamObj = {
title : title, // 分享标题
desc : content, // 分享描述
imgUrl: imgurl, // 分享图标
shareUrl: link // 分享链接
};
wxParamObjStr = JSON.stringify(wxParamObj);
pahaofang.setRightItem('share', wxParamObjStr);
场景2:
分享的按钮是html页面的元素。网页前端监听点击事件,传参数,调APP方法。点击html元素时,下面的代码执行。(网页前端在click事件里面写如下代码)
Native.share(title, content, link, imgurl);
场景3:
分享的按钮是html页面的元素。网页前端监听点击事件,重定向到APP协议中。点击html元素时,下面的代码执行。(网页前端在click事件里面写如下代码)
<a href="javascript:void(0);" class="hft-share">分享</a>
var shareUrl = "haofangtuo://service/showSNSPad?desc=锄禾日当午\r\n信息信息信息内容内容内容!&" +
"imgUrl=http://static.xxx.com/mmm.png&" +"shareUrl="+encodeURIComponent(link)+
"&title=锄禾日当午\r\n信息信息信息内容内容内容";
$('.hft-share').on('click', function(event) {
location.href = shareUrl;
});
三、浏览器分享
浏览器自带分享功能,移动端html页面不用额外做。
移动端html页面分享的更多相关文章
- 移动端以及 PC浏览器页面分享到朋友圈等的功能实现
我们经常可以在一些 app上看到分享到朋友圈.微信好友.qq好友等功能,例如 饿了么.美团等 app,下单之后就会弹出给好友发红包的 modal窗,这在 app上很常见,app的权限可以很大,甚至连启 ...
- 移动端H5页面的设计稿尺寸大小规范-转载自http://www.chinaz.com/design/2015/1103/465670.shtml
机屏幕尺寸,设计稿应该按照哪一个尺寸作为标准尺寸.现在已经有2K分辨率的手机屏幕了,设计稿是不是也要把宽高跟着最大分辨率来设计.显然不是. 请注意:(以下所有讨论内容和规范均将viewport设定为c ...
- 微信移动端web页面调试小技巧
技术贴还是分享出来更加好,希望能对一些朋友有帮助,个人博客 http://lizhug.com/mymajor/微信移动端web页面调试小技巧
- 移动端h5页面的设计稿尺寸
当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计师和前端工程师肯定会纠结的.如果是app设计师,就不会那么纠结啦. 延伸阅读: 2015年度最 ...
- 教你如何用 lib-flexible 实现移动端H5页面适配
前话 好久没写教程了(可能会误导新手的菜鸟教程( ̄▽ ̄)"). 这是我的github,欢迎前端大大们和我一起学习交流 https://github.com/pwcong 最近入职公司做前端实 ...
- vue移动端h5页面根据屏幕适配的四种方案
最近做了两个关于h5页面对接公众号的项目,不得不提打开微信浏览器内置地图导航的功能确实有点恶心.下次想起来了的话,进行总结分享一下如何处理.在vue移动端h5页面当中,其中适配是经常会遇到的问题,这块 ...
- 移动端 H5 页面注意事项
1. 单个页面内容不能过多 设计常用尺寸:750 x 1334 / 640 x 1134,包含了手机顶部信号栏的高度. 移动端H5活动页面常常需要能够分享到各种社交App中,常用的有 微信.QQ 等. ...
- 移动端H5页面注意事项
1. 单个页面内容不能过多 设计常用尺寸:7501334 / 6401134,包含了手机顶部信号栏的高度. 移动端H5活动页面常常需要能够分享到各种社交App中,常用的有微信.QQ等. 使用移动设备查 ...
- 移动端H5微信分享
移动端H5微信分享功能,可以使项目更好地传播. 微信官方教程文档: 微信JS-SDK说明文档 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置&quo ...
随机推荐
- V4L2学习记录【转】
转自:http://blog.chinaunix.net/uid-30254565-id-5637600.html V4L2学习记录 这个还没有分析完,先在这放着,防止电脑坏掉丢了,以后再完善 V4L ...
- openssl版本升级操作记录【转】
需要部署nginx的https环境,之前是yum安装的openssl,版本比较低,如下: [root@nginx ~]# yum install -y pcre pcre-devel openss ...
- XmlDocument根据节点的属性值获取节点
string targetParm = string.Format("STUDENTS/STUDENT[@NO='{0}']", targetValue);//生成目标获取节点的参 ...
- ASP.NET Core Identity 实战(4)授权过程
这篇文章我们将一起来学习 Asp.Net Core 中的(注:这样描述不准确,稍后你会明白)授权过程 前情提要 在之前的文章里,我们有提到认证和授权是两个分开的过程,而且认证过程不属于Identity ...
- eclipse自动添加注释
自动添加注释 快捷键:alt shift jwindows-->preference Java-->Code Style-->Code Templates code-->new ...
- nginx异常处理
1.nginx不转发消息头header问题 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_se ...
- MFC CStdioFile
读Text文件 void CNWiReworkDlg::ReadHexFile() { using namespace std; CStdioFile file; file.Open(hexFileP ...
- [学习笔记]Java代码中各种类型变量的内存分配机制
程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而 ...
- PYTHON-函数对象,嵌套,名称空间与作用域,闭包函数
一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo pri ...
- [Android四大组件之二]——Service
Service是Android中四大组件之一,在Android开发中起到非常重要的作用,它运行在后台,不与用户进行交互. 1.Service的继承关系: java.lang.Object → andr ...