UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

107 lines (103 loc) 3.14 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); /** * 多重解码。避免内嵌在外部时地址参数被编码,先进行URL解码再进行HTML字符实体解码 * @docgen * @function decode * @param {string} str 文本 * @returns 解码后的文本 */ function decode(str) { if (str === void 0) { str = ''; } if (!str) return str; var text = decodeURIComponent(str); // 含有实体符号 &,需要实体解码处理 var regex = /&/g; if (regex.test(text)) { text = text.replace(regex, '&'); } return text; } /** * 将参数对象转成字符串 * @docgen * @function stringifyParams * @param {Object} params 参数对象 * @returns {String} */ function stringifyParams(params) { return Object.keys(params).reduce(function (acc, key) { var value = params[key]; return "".concat(acc ? "".concat(acc, "&") : '').concat(key, "=").concat(value); }, ''); } /** * 小程序不支持URL对象,用字符串拼接方式添加 * 注意:已有相同key不支持覆盖,会重复添加 * @docgen * @function addUrlParam * @param url 输入url * @param key 键 * @param value 值 */ function addUrlParam(url, key, value) { var ret = url; if (url.indexOf('?') !== -1) { ret = "".concat(ret, "&").concat(key, "=").concat(value); } else { ret = "".concat(ret, "?").concat(key, "=").concat(value); } return ret; } /** * 为url添加参数 * * @export * @param {string} url * @param {object} params * @param {boolean} [shouldOverride=false] * @returns {string} */ function addUrlParams(url, params, shouldOverride) { if (shouldOverride === void 0) { shouldOverride = false; } // 使用正则表达式找到当前 URL 中的哈希部分 var hashPart = url.match(/#.*/); var hash = hashPart ? hashPart[0] : ''; // 从原始 URL 中删除哈希部分 var mainUrl = url.replace(/#.*/, ''); var _a = mainUrl.split('?'), baseUrl = _a[0], originalQueryString = _a[1]; var originalParams = originalQueryString ? originalQueryString.split('&').reduce(function (acc, entry) { var _a = entry.split('='), key = _a[0], value = _a[1]; acc[decodeURIComponent(key)] = decodeURIComponent(value); return acc; }, {}) : {}; // 向原始参数对象添加新参数,同时判断是否覆盖现有参数值 Object.entries(params).forEach(function (_a) { var key = _a[0], value = _a[1]; if (shouldOverride || !Object.prototype.hasOwnProperty.call(originalParams, key)) { originalParams[key] = value; } }); // 将原始参数和新参数合并为查询字符串 var updatedQueryString = Object.entries(originalParams).map(function (_a) { var key = _a[0], value = _a[1]; return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); }).join('&'); // 拼接新的 URL var updatedUrl = "".concat(baseUrl, "?").concat(updatedQueryString).concat(hash); return updatedUrl; } exports.addUrlParam = addUrlParam; exports.addUrlParams = addUrlParams; exports.decode = decode; exports.stringifyParams = stringifyParams;