ohu-share
跨浏览器的分享插件,可优雅降级
分享策略
该分享插件秉持稳定,可靠的特点,可在PC端和移动端分别进行分享,移动端如果目标分享对象支持原生调用分享,那就进行原生分享,如果不支持,使用URL分享;PC端则一贯使用URL分享。
分享目标
✅ 微信好友
✅ 微信朋友圈
✅ QQ好友
✅ QQ空间
✅ 微博
浏览器原生支持列表
✅ QQ浏览器
✅ UC浏览器
✅ 微信内置浏览器
✅ 百度浏览器
✅ 百度APP
✅ 搜狗浏览器
❌ QQ内置浏览器(待支持)
引入
npm i -S ohu-share
or
API
new Share(shareData, config)
初始化分享,主要是传入分享数据配置,及插件本身的配置
const share = title: '简单例子' desc: '简单的摘要和描述' icon: '' link: 'https://github.com/jeffwcx' from: 'github' wechat: // option,未选定配置,通过share.setShareData可异步加载 appId: '' timestamp: '' nonceStr: '' signature: '' dataset: '' // 可查看share.mount API appMap: {} // 可查看share.mount API {} // 可查看share.setSupport API
share.to(Apps.MOMENTS)
单独APP分享接口
share
share.on('share', successHandler, errorHandler)
share.mount(), share.mount({ dataset, appMap, el})
多个元素分享
share to QQshare to QZone
share.setShareData(modifyShareDataFunc)
设置分享数据
// 可返回Promise,可用于动态加载Share数据(例如微信)share // 直接设置share
share.setSupport(func)
定制返回的结果isSupport,以下为默认函数,你可查看下文的SUPPORT常量来决定你要如何定制函数
// 定制isSupport属性share
share.setAppMap(appMap), share.setAppMap(newAppValue, Apps.MOMENTS)
share share
常量
- 浏览器常量
BrowsersUC // 'uc'
or
QQBROWSER: 'qqbrowser' UC: 'uc' BAIDUBROWSER: 'baidubrowser' BAIDU: 'baidu' QQ: 'qq' WECHAT: 'wechat' LIEBAO: 'liebao' SOGOU: 'sogou'
- APP名称常量
AppsWECHAT // 'wechat'
or
WECHAT: 'wechat' MOMENTS: 'moments' QQ: 'qq' QZONE: 'qzone' WEIBO: 'weibo'
- 支持类型常量
SUPPORTLEVEL1 // 0 支持自定义分享和单独唤起APP
or
各个支持等级的解释
/** * 最好的支持类型,支持自定义分享和单独唤起APP,例如QQ浏览器 */ LEVEL1: 0 /** * 支持自定义分享,但只能唤起分享面板,例如百度浏览器 */ LEVEL2: 1 /** * 不支持自定义分享(或者支持有残缺),支持单个唤起应用,例如UC浏览器 */ LEVEL3: 2 /** * 支持自定义分享,但不支持唤起,例如微信内置浏览器 */ LEVEL4: 3 /** * 支持scheme */ LEVEL5: 4 /** * 支持url */ LEVEL6: 5 /** * 不支持任何形式的分享 */ LEVEL7: 6
Examples
TODO
- 使用async/await api
- 定制分享策略
- vue组件
一些你需要了解的坑
-
UC ios浏览器上分享,其自有变量
ucbrowser
在DOMContentLoaded
或者是load
事件触发时为undefined
,据我测算大概在50ms后ucbrowser
不为undefined
-
百度浏览器,百度APP,UC浏览器,微信内置浏览器均不支持启动外部协议(location.href不起作用)