美文网首页web前端
window.open 打开窗口 并用post方式提交

window.open 打开窗口 并用post方式提交

作者: Cherry丶小丸子 | 来源:发表于2021-06-07 13:43 被阅读0次

方法

/**
 * 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');

相关文章

网友评论

    本文标题:window.open 打开窗口 并用post方式提交

    本文链接:https://www.haomeiwen.com/subject/tjkzsltx.html