方法
/**
* window.open 打开窗口 并用post方式提交
* @param {Object} url
* @param {Object} data
* @param {Object} name
*/
openPostWindow(url, data, name){
// 创建 form 表单
let tempForm = document.createElement('form');
tempForm.id = 'tempForm';
tempForm.action = url;
tempForm.method = 'post';
// tempForm.enctype = 'multipart/form-data';
tempForm.target = name;
// 创建 用户名输入框
let userName = document.createElement('input');
userName.type = 'hidden';
userName.name = 'userName';
userName.value = data.userName;
// 创建 密码输入框
let passWord = document.createElement('input');
passWord.type = 'hidden';
passWord.name = 'passWord';
passWord.value = data.passWord;
// 将用户名和密码输入框插入 form 表单
tempForm.appendChild(userName);
tempForm.appendChild(passWord);
// 将 form 表单插入 body
document.body.appendChild(tempForm);
// 增加提交监听 处理浏览器的兼容性
if (window.attachEvent) {
tempForm.attachEvent('onsubmit', () => { window.open(url, name); });
} else if (window.addEventListener) {
tempForm.addEventListener('onsubmit', () => { window.open(url, name); });
}
// 触发监听 处理浏览器的兼容性
if(tempForm.fireEvent){
tempForm.fireEvent('onsubmit');
}else{
let evt = document.createEvent('HTMLEvents');
evt.initEvent('onsubmit', true, true);
tempForm.dispatchEvent(evt);
}
// form 表单提交事件
tempForm.submit();
// 从 body 中移除 form 表单
document.body.removeChild(tempForm);
}
调用
let params = {
userName: 'userName'
passWord: 'passWord'
}
this.openPostWindow('http://devops.gisquest.com/doorManagerLoginOA', params, '_blank');
网友评论