dareway-rui
Version:
51 lines (40 loc) • 1.81 kB
JavaScript
;
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