common.js 2.72 KB
var invokeMethod = function(obj) {
    if (window.yohoInterface) {
        window.yohoInterface.triggerEvent(obj.success || function () {
        }, obj.fail || function () {
        }, {
            method: obj.method,
            arguments: obj.args
        });
    } else {
        obj.fail && obj.fail();
    }
}

var linkToMiniApp = function(goUrl, type) {
    var url = goUrl || '';
    if (url && url.indexOf('http') < 0 && type === 'other') {
        url = document.location.protocol + '//' + document.location.host + url;
    }
    if (url) {
        var scene;
        if (type === 'product' || type === 'brand') {
            scene = url;
        } else {
            var base_url = decodeURIComponent(url).split('?')[0];
            var params = getQueryObj(url);
            var paramStr = '';
            Object.keys(params).forEach(function(key) {
                paramStr += paramStr === '' ? '?' + key + '=' + params[key] : '&' + key + '=' + params[key];
            })
            scene = '/pages/webview/webview?url=' + base_url + encodeURIComponent(paramStr);
        }
        wx.miniProgram.navigateTo({url: scene});
        return false;
    } else {
        return true;
    }
};


var getQueryObj = function(link) {
    var loc = decodeURIComponent(document.location.href);
    if (link) {
        loc = decodeURIComponent(link);
    }
    var variables = '';
    var variableArr = [];
    var finalArr = [];

    if (loc.indexOf('?') > 0) {
        variables = loc.split('?')[1];
    }

    if (variables.length > 0) {
        variableArr = variables.split('#')[0].split('&');
    }

    for (var i = 0; i < variableArr.length; i++) {
        var obj = {};

        obj.name = variableArr[i].split('=')[0];
        obj.value = variableArr[i].split('=')[1];
        if (variableArr[i].split('=').length > 2) {
            for (var j = 2; j < variableArr[i].split('=').length; j++) {
                obj.value += '=' + variableArr[i].split('=')[j];
            }
        }
        finalArr.push(obj);
    }

    var query_obj = {};

    for (var i = 0; i < finalArr.length; i++) {
        query_obj[finalArr[i].name] = finalArr[i].value;
    }

    return query_obj;
};

var createLinkButton = function(url, id) {
    var a = document.createElement('a');
    a.style.position = 'fixed';
    a.style.top = 0;
    a.style.left = 0;
    a.style.border = 'none';
    a.style.outline = 'none';
    a.style.resize = 'none';
    a.style.background = 'transparent';
    a.style.color = 'transparent';
    a.setAttribute('id', id);
    a.setAttribute('href', url);
    document.body.appendChild(a);
    return a;
};

module.exports = {
    invokeMethod: invokeMethod,
    getQueryObj: getQueryObj,
    linkToMiniApp: linkToMiniApp,
    createLinkButton: createLinkButton
};