UNPKG

dareway-rui

Version:

51 lines (40 loc) 1.81 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true }); exports.default = openNewWindowByPost; var _slicedToArray2 = _interopRequireDefault(require('@babel/runtime/helpers/slicedToArray')); function openNewWindowByPost(url) { if (!url) { throw new Error('openNewWindowByPost 入参 url 为空,请检查!'); } if (!(typeof url == 'string')) { throw new Error('openNewWindowByPost 入参 url 必须为 String 类型,请检查!'); } // 1. 通过原生FORM发起下载文件的请求 // a. 动态创建一个FORM并追加到body var submitDataForm = document.createElement('FORM'); submitDataForm.method = 'POST'; document.body.appendChild(submitDataForm); // b. 将URL中的各字段分解为FORM中的实体并追加到动态创建的FORM中 var questionMarkPos = url.indexOf('?'); var action = url.substring(0, questionMarkPos); var params = url.substring(questionMarkPos + 1); var urlArray = params.split('&'); for (var i = 0; i < urlArray.length; i++) { var _urlArray$i$split = urlArray[i].split('='), _urlArray$i$split2 = (0, _slicedToArray2.default)(_urlArray$i$split, 2), key = _urlArray$i$split2[0], value = _urlArray$i$split2[1]; var o = document.createElement('INPUT'); o.type = 'hidden'; o.name = key; o.id = key; o.value = decodeURIComponent(value); submitDataForm.appendChild(o); } // c. 通过FORM的submit方法发起请求 submitDataForm.action = action; submitDataForm.target = '_blank'; submitDataForm.submit(); submitDataForm.outerHTML = ''; } //@ sourceMappingURL=openNewWindowByPost.js.map