版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
最近在开发一个类似于小年糕的视频工具类的小程序,在写分享功能的时候需要实现以下两种场景
1.当点击某个视频分享出去时,好友打开到视频详情页播放视频,返回时跳到首页。
2.当在用户主页点击分享时,好友打开到用户的主页,返回时也跳到首页。
以上实现的方法基本为分享时,分享的路径为首页并且传递一些参数,当好友打开时,通过获取传递的参数,来确定跳转到哪个页面。注意,之所以要从首页跳过去,是因为用户要返回时,当前小程序的页面栈里必须要加载过首页,才能返回到首页。
那么问题来了,如果要将上面两个场景以及后续还有多个分享场景用一个封装的方法实现,分享的路径首页参数值需要是另一个页面的地址和该页面的参数,现实的情况是这样一个复杂的路径在分享时并不是很友好,至于会遇到什么情况,我就不说了,要不然你也不会找到这里,下面给大家分享一下解决办法。
首先是分享路径参数的处理。
第一步:把分享路径首页的参数值即要跳转到另一个页面的路径和该页面的参数作为 URI 组件进行编码,即下面代码中的str进行编码。
var url=encodeURIComponent(str) ;
第二步:把编过的码转成字符串。
var strUrl = JSON.stringify(url) ;
然后是好友打开首页后,对首页所携带的另一个页面地址和该页面参数的处理。
第一步:解析字符串格式的路径。
var navigateUrl = JSON.parse(options.url) ;
第二步:将解析过后的字符串地址进行URL解码。
var finallyUrl = decodeURIComponent( navigateUrl );
最后得出的finallyUrl即从首页要跳转到另一个页面的地址和参数。