一般 window.open 传参数都是用Get.方式,在url后面拼接参数。
但这样有时候并不适用,如:
1)不想被看到参数信息
2)参数过长,get有限制会被截断
3)可能有中文编码问题
所以需要用post方式 ,下面说的就是一种window.open发送post请求的方法。
网页的post一般是通过form表单的方式来实现的,所以现在来模拟form表单的方式来实现window.open效果。
主要是通过form的子元素来设置需要传递的参数,之后给form表单绑定提交事件并手动触发提交表单。完成后就是收尾工作————把创建的表单移除。
具体例子如下:
但这样有时候并不适用,如:
1)不想被看到参数信息
2)参数过长,get有限制会被截断
3)可能有中文编码问题
所以需要用post方式 ,下面说的就是一种window.open发送post请求的方法。
网页的post一般是通过form表单的方式来实现的,所以现在来模拟form表单的方式来实现window.open效果。
主要是通过form的子元素来设置需要传递的参数,之后给form表单绑定提交事件并手动触发提交表单。完成后就是收尾工作————把创建的表单移除。
具体例子如下:
/*
*url:window.open需要的url
*data:存放window.open需要传递的参数,这里存放的是数组
*name:可传递设置窗体属性的参数等
*注:以上参数可以根据需要改变,当前的方式只是例子
*/
function openPostWindow(url, data, name){
var categoryid = data[0];
var reportId =data[1];
//首先创建一个form表单
var tempForm = document.createElement("form");
tempForm.id="tempForm1";
//制定发送请求的方式为post
tempForm.method="post";
//此为window.open的url,通过表单的action来实现
tempForm.action=url;
//利用表单的target属性来绑定window.open的一些参数(如设置窗体属性的参数等)
tempForm.target=name;
//创建input标签,用来设置参数
var hideInput = document.createElement("input");
hideInput.type="hidden";
hideInput.name= "categoryid";
hideInput.value= categoryid;
//将input表单放到form表单里
tempForm.appendChild(hideInput);
var hideInput2 = document.createElement("input");
hideInput2.type = "hidden";
hideInput2.name = "reportId";
hideInput2.value = reportId;
tempForm.appendChild(hideInput2);
//此为给form表单绑定事件(onsubmit),由于存在浏览器兼容问题所以此处加了一个判断。
//但实质都是为form表单绑定一个提交事件,以便之后触发实现window.open效果
if(document.all){
tempForm.attachEvent("onsubmit",function(){}); //IE
}else{
var subObj = tempForm.addEventListener("submit",function(){},false); //firefox
}
//将此form表单添加到页面主体body中
document.body.appendChild(tempForm);
//然后触发onsubmit事件时执行openWindow(name)函数。因为有特定浏览器会打开一个空白页面所以这里的function(甚至整个if)可以根据情况省略,经试验这不会影响模拟window.open的效果。
if(document.all){
tempForm.fireEvent("onsubmit",function(){ openWindow(name); });
}else{
//tempForm.dispatchEvent(new Event("submit"));
$("form").trigger("onsubmit",function(){ openWindow(name); });
}
//手动触发,提交表单
tempForm.submit();
//从body中移除form表单
document.body.removeChild(tempForm);
}
function openWindow(name){
window.open('about:blank',name,'height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes');
}<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
这篇日志说是原创但其实算是总结,很多前辈都写过类似的文章。希望看到的各位不要较真。关于代码有其他意见的欢迎留言。