解决微信分享时在URL尾部自动加入后缀

先说明情况:
web项目在微信内置浏览器中打开,在项目生成的图片分享页通过微信进行分享给朋友及朋友圈时分享失败,生成的内容图片无法显示。通过查看分享出的url地址发现微信在原本的基础上自动添加了=&from=singlemessage的后缀。项目中96本为生成的图片名称,即96.jpg,由于微信原因导致图片名称发生改变从而分享时图片无法显示。
如下:
原网址http://XXXXX.html?ipien1Gm96
通过微信分享时网址变为http://XXXXX.html?ipien1Gm96=或
http://XXXXX.html?ipien1Gm96=&from=singlemessage
通过搜索发现如下原因:
微信分享会根据分享的不同,为原始链接拼接如下参数:

朋友圈 from=timeline&isappinstalled=0
微信群 from=groupmessage&isappinstalled=0
好友分享 from=singlemessage&isappinstalled=0

给出的解决办法为在连接后加上?&再进行分享。
而该解决方案主要针对纯html分享,对本例不适用,仍旧影响图片名称。故采用以下解决办法

function GetRequest() {
    var url = decodeURI(decodeURI(location.search)); //获取url中"?"符后的字串,使用了两次decodeRUI解码
                    var theRequest = new Object();
                    if(url.indexOf("?") != -1) {
                        var str = url.substr(1);
                        strs = str.split("&");
                        for(var i = 0; i < strs.length; i++) {
                            theRequest[strs[i].split("1Gm")[0]] = unescape(strs[i].split("1Gm")[1]);
                        }
                        return theRequest;
                    }
                }
                var postData = GetRequest();
                var spaceId = postData.ipien;
                //console.log(spaceId.split("=").join(""));
                spaceId=spaceId.split("=").join("");

注:此处1Gm只为单纯隐藏url地址中的=, 无实际意义
将最后输出值赋值给图片名称 spaceId.split(“=”).join(“”)+“.jpg”;
本例结束。
附:本例图片为两张图通过canvas合成而来,后文介绍。
//canvas图片合成
var data = ["a.jpg", spaceId + ".jpg"],base64 = [];

你可能感兴趣的:(其他)